pulling trunk
[ardour.git] / libs / ardour / ardour / route.h
index 7afc84e74ac2571233a7249a7e2796c444c846bb..5699d9ef14a89bca6ed16d6052c4ca219a0f96c7 100644 (file)
 #include <map>
 #include <string>
 
-#include <pthread.h>
-
-#include <pbd/atomic.h>
 #include <pbd/fastlog.h>
-#include <pbd/lockmonitor.h>
+#include <glibmm/thread.h>
 #include <pbd/xml++.h>
 #include <pbd/undo.h>
 #include <midi++/controllable.h>
@@ -127,9 +124,11 @@ class Route : public IO
        bool phase_invert() const { return _phase_invert; }
        
        void       set_edit_group (RouteGroup *, void *);
+       void       drop_edit_group (void *);
        RouteGroup *edit_group () { return _edit_group; }
 
        void       set_mix_group (RouteGroup *, void *);
+       void       drop_mix_group (void *);
        RouteGroup *mix_group () { return _mix_group; }
 
        virtual void  set_meter_point (MeterPoint, void *src);
@@ -140,14 +139,14 @@ class Route : public IO
        void flush_redirects ();
 
        template<class T> void foreach_redirect (T *obj, void (T::*func)(Redirect *)) {
-               RWLockMonitor lm (redirect_lock, false, __LINE__, __FILE__);
+               Glib::RWLock::ReaderLock lm (redirect_lock);
                for (RedirectList::iterator i = _redirects.begin(); i != _redirects.end(); ++i) {
                        (obj->*func) (*i);
                }
        }
 
        Redirect *nth_redirect (uint32_t n) {
-               RWLockMonitor lm (redirect_lock, false, __LINE__, __FILE__);
+               Glib::RWLock::ReaderLock lm (redirect_lock);
                RedirectList::iterator i;
                for (i = _redirects.begin(); i != _redirects.end() && n; ++i, --n);
                if (i == _redirects.end()) {
@@ -198,7 +197,7 @@ class Route : public IO
 
        XMLNode& get_state();
        int set_state(const XMLNode& node);
-       XMLNode& get_template();
+       virtual XMLNode& get_template();
 
        sigc::signal<void,void*> SelectedChanged;
 
@@ -292,9 +291,9 @@ class Route : public IO
        jack_nframes_t           _roll_delay;
        jack_nframes_t           _own_latency;
        RedirectList             _redirects;
-       PBD::NonBlockingRWLock      redirect_lock;
+       Glib::RWLock      redirect_lock;
        IO                      *_control_outs;
-       PBD::NonBlockingLock      control_outs_lock;
+       Glib::Mutex      control_outs_lock;
        RouteGroup              *_edit_group;
        RouteGroup              *_mix_group;
        std::string              _comment;