X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fsession.h;h=2976fec8f3307a48534101bd3a501c9275feda54;hb=a3c5b81ca13f81cd4db628096943f049bc6c0af1;hp=47329f73951d1be248fe4a85b7c1a7de6b09293d;hpb=9a0f4b1ef354f5ccc7cbe49a28b4a5eb35e0eb99;p=ardour.git diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 47329f7395..2976fec8f3 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -792,6 +792,7 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop static const SessionEvent::RTeventCallback rt_cleanup; void set_solo (boost::shared_ptr, bool, SessionEvent::RTeventCallback after = rt_cleanup, PBD::Controllable::GroupControlDisposition group_override = PBD::Controllable::UseGroup); + void set_implicit_solo (boost::shared_ptr, int delta, bool up_or_downstream, SessionEvent::RTeventCallback after = rt_cleanup, PBD::Controllable::GroupControlDisposition group_override = PBD::Controllable::UseGroup); void clear_all_solo_state (boost::shared_ptr); void set_just_one_solo (boost::shared_ptr, bool, SessionEvent::RTeventCallback after = rt_cleanup); void set_mute (boost::shared_ptr, bool, SessionEvent::RTeventCallback after = rt_cleanup, PBD::Controllable::GroupControlDisposition group_override = PBD::Controllable::UseGroup); @@ -1922,7 +1923,20 @@ class LIBARDOUR_API Session : public PBD::StatefulDestructible, public PBD::Scop return ev; } + /* specialized version realtime "apply to set of routes" operations */ + template SessionEvent* + get_rt_event (boost::shared_ptr rl, T1 t1arg, T2 t2arg, SessionEvent::RTeventCallback after, PBD::Controllable::GroupControlDisposition group_override, + void (Session::*method) (boost::shared_ptr, T1, T2, PBD::Controllable::GroupControlDisposition)) { + SessionEvent* ev = new SessionEvent (SessionEvent::RealTimeOperation, SessionEvent::Add, SessionEvent::Immediate, 0, 0.0); + ev->rt_slot = boost::bind (method, this, rl, t1arg, t2arg, group_override); + ev->rt_return = after; + ev->event_loop = PBD::EventLoop::get_event_loop_for_thread (); + + return ev; + } + void rt_set_solo (boost::shared_ptr, bool yn, PBD::Controllable::GroupControlDisposition group_override); + void rt_set_implicit_solo (boost::shared_ptr, int delta, bool up_or_downstream, PBD::Controllable::GroupControlDisposition); void rt_clear_all_solo_state (boost::shared_ptr, bool yn, PBD::Controllable::GroupControlDisposition group_override); void rt_set_just_one_solo (boost::shared_ptr, bool yn, PBD::Controllable::GroupControlDisposition /* ignored*/ ); void rt_set_mute (boost::shared_ptr, bool yn, PBD::Controllable::GroupControlDisposition group_override);