X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Froute.h;h=84d78fcdd3d51d94410485b2c3168db7fe050fb1;hb=b728d3c9ff7541251ab9d11123125a54d000e740;hp=44069462d1e7d4dcf9fdd2a40371bbda94bae6aa;hpb=fd291d1fa5a227eb13767255c535f66120124f32;p=ardour.git diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index 44069462d1..84d78fcdd3 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -391,14 +391,6 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou AutomationType atype, boost::shared_ptr alist, boost::shared_ptr route); - - void set_value (double val, PBD::Controllable::GroupControlDisposition group_override) { - boost::shared_ptr r = _route.lock(); - if (r) { - r->set_control ((AutomationType) parameter().type(), val, group_override); - } - } - protected: friend class Route; @@ -418,6 +410,7 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou void set_value (double val, PBD::Controllable::GroupControlDisposition group_override) { boost::shared_ptr r = _route.lock(); if (r) { + /* Route must mediate group control */ r->set_control ((AutomationType) parameter().type(), val, group_override); } } @@ -470,6 +463,26 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou void _set_value (double, PBD::Controllable::GroupControlDisposition group_override); }; + class LIBARDOUR_API SoloIsolateControllable : public RouteAutomationControl { + public: + SoloIsolateControllable (std::string name, boost::shared_ptr); + void set_value (double, PBD::Controllable::GroupControlDisposition group_override); + /* currently no automation, so no need for set_value_unchecked() */ + double get_value () const; + private: + void _set_value (double, PBD::Controllable::GroupControlDisposition group_override); + }; + + class LIBARDOUR_API SoloSafeControllable : public RouteAutomationControl { + public: + SoloSafeControllable (std::string name, boost::shared_ptr); + void set_value (double, PBD::Controllable::GroupControlDisposition group_override); + /* currently no automation, so no need for set_value_unchecked() */ + double get_value () const; + private: + void _set_value (double, PBD::Controllable::GroupControlDisposition group_override); + }; + void set_control (AutomationType, double val, PBD::Controllable::GroupControlDisposition group_override); boost::shared_ptr solo_control() const { @@ -488,6 +501,21 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou return _phase_control; } + boost::shared_ptr solo_isolate_control() const { + return _solo_isolate_control; + } + + boost::shared_ptr solo_safe_control() const { + return _solo_safe_control; + } + + boost::shared_ptr monitoring_control() const { + /* tracks override this to provide actual monitoring control; + busses have no possible choices except input monitoring. + */ + return boost::shared_ptr (); + } + /* Route doesn't own these items, but sub-objects that it does own have them and to make UI code a bit simpler, we provide direct access to them here. @@ -693,6 +721,8 @@ class LIBARDOUR_API Route : public SessionObject, public Automatable, public Rou boost::shared_ptr _mute_control; boost::shared_ptr _mute_master; boost::shared_ptr _phase_control; + boost::shared_ptr _solo_isolate_control; + boost::shared_ptr _solo_safe_control; virtual void act_on_mute () {}