fixes for destructive track offsets of various kinds; move from jack_nframes_t -...
[ardour.git] / libs / ardour / ardour / redirect.h
index b37058907986bced16774569a69f29394f11b216..691e690b47a7de9856888e89a4e4231c5b5978b8 100644 (file)
 #include <vector>
 #include <set>
 #include <map>
+#include <boost/shared_ptr.hpp>
 #include <sigc++/signal.h>
 
-#include <pbd/lockmonitor.h>
+#include <glibmm/thread.h>
+
 #include <pbd/undo.h>
 
 #include <ardour/ardour.h>
@@ -63,7 +65,7 @@ class Redirect : public IO
        Redirect (const Redirect&);
        virtual ~Redirect ();
 
-       static Redirect *clone (const Redirect&);
+       static boost::shared_ptr<Redirect> clone (boost::shared_ptr<const Redirect>);
 
        bool active () const { return _active; }
        void set_active (bool yn, void *src);
@@ -79,18 +81,17 @@ class Redirect : public IO
        Placement placement() const { return _placement; }
        void set_placement (Placement, void *src);
 
-       virtual void run (vector<Sample *>& ibufs, uint32_t nbufs, jack_nframes_t nframes, jack_nframes_t offset) = 0;
+       virtual void run (vector<Sample *>& ibufs, uint32_t nbufs, nframes_t nframes, nframes_t offset) = 0;
        virtual void activate () = 0;
        virtual void deactivate () = 0;
-       virtual jack_nframes_t latency() { return 0; }
+       virtual nframes_t latency() { return 0; }
 
-       virtual void set_block_size (jack_nframes_t nframes) {}
+       virtual void set_block_size (nframes_t nframes) {}
 
        sigc::signal<void,Redirect*,void*> active_changed;
        sigc::signal<void,Redirect*,void*> placement_changed;
        sigc::signal<void,Redirect*,bool>  AutomationPlaybackChanged;
        sigc::signal<void,Redirect*,uint32_t> AutomationChanged;
-       sigc::signal<void,Redirect*> GoingAway;
 
        static sigc::signal<void,Redirect*> RedirectCreated;
        
@@ -119,9 +120,9 @@ class Redirect : public IO
        void mark_automation_visible (uint32_t, bool);
        
        AutomationList& automation_list (uint32_t);
-       bool find_next_event (jack_nframes_t, jack_nframes_t, ControlEvent&) const;
+       bool find_next_event (nframes_t, nframes_t, ControlEvent&) const;
 
-       virtual void transport_stopped (jack_nframes_t frame) {};
+       virtual void transport_stopped (nframes_t frame) {};
        
   protected:
        void set_placement (const string&, void *src);
@@ -131,7 +132,7 @@ class Redirect : public IO
        map<uint32_t,AutomationList*> parameter_automation;
        set<uint32_t> visible_parameter_automation;
 
-       mutable PBD::NonBlockingLock _automation_lock;
+       mutable Glib::Mutex _automation_lock;
 
        void can_automate (uint32_t);
        set<uint32_t> can_automate_list;
@@ -147,6 +148,6 @@ class Redirect : public IO
        void* _gui;  /* generic, we don't know or care what this is */
 };
 
-}; /* namespace ARDOUR */
+} // namespace ARDOUR
 
 #endif /* __ardour_redirect_h__ */