#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>
class Route : public IO
{
- private:
- typedef list<Redirect *> RedirectList;
+ protected:
+ typedef list<Redirect *> RedirectList;
public:
enum Flag {
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);
void flush_redirects ();
template<class T> void foreach_redirect (T *obj, void (T::*func)(Redirect *)) {
- LockMonitor lm (redirect_lock, __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) {
- LockMonitor lm (redirect_lock, __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()) {
XMLNode& get_state();
int set_state(const XMLNode& node);
- XMLNode& get_template();
+ virtual XMLNode& get_template();
sigc::signal<void,void*> SelectedChanged;
void protect_automation ();
+ void set_remote_control_id (uint32_t id);
+ uint32_t remote_control_id () const;
+ sigc::signal<void> RemoteControlIDChanged;
+
protected:
friend class Session;
jack_nframes_t _roll_delay;
jack_nframes_t _own_latency;
RedirectList _redirects;
- PBD::NonBlockingLock 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;
state_id_t _current_state_id;
uint32_t redirect_max_outs;
+ uint32_t _remote_control_id;
uint32_t pans_required() const;
uint32_t n_process_buffers ();