change API of Controllable::Changed signal to include (from_self, GroupControlDisposi...
[ardour.git] / libs / ardour / ardour / route.h
index f819ddac63458b654bcd1bc9fa54df0c0a8ed195..0afafe82eb22fa0e40cd3c06526e4a6352d9e51e 100644 (file)
@@ -350,14 +350,8 @@ public:
        framecnt_t signal_latency() const { return _signal_latency; }
 
        PBD::Signal0<void>       active_changed;
-       PBD::Signal0<void>       phase_invert_changed;
        PBD::Signal0<void>       denormal_protection_changed;
-       PBD::Signal1<void,PBD::Controllable::GroupControlDisposition>  listen_changed;
-       PBD::Signal2<void,bool,PBD::Controllable::GroupControlDisposition>  solo_changed;
-       PBD::Signal0<void>       solo_safe_changed;
-       PBD::Signal0<void>       solo_isolated_changed;
        PBD::Signal0<void>       comment_changed;
-       PBD::Signal0<void>       mute_changed;
        PBD::Signal0<void>       mute_points_changed;
 
        /** track numbers - assigned by session
@@ -477,6 +471,18 @@ public:
                boost::weak_ptr<Route> _route;
        };
 
+       class BooleanRouteAutomationControl : public RouteAutomationControl {
+       public:
+               BooleanRouteAutomationControl (const std::string& name,
+                                              AutomationType atype,
+                                              boost::shared_ptr<AutomationList> alist,
+                                              boost::shared_ptr<Route> route)
+                       : RouteAutomationControl (name, atype, alist, route) {}
+       protected:
+               double get_masters_value_locked() const;
+
+       };
+
        class GainControllable : public GainControl  {
        public:
                GainControllable (Session& session,
@@ -501,7 +507,7 @@ public:
                boost::weak_ptr<Route> _route;
        };
 
-       class SoloControllable : public RouteAutomationControl {
+       class SoloControllable : public BooleanRouteAutomationControl {
        public:
                SoloControllable (std::string name, boost::shared_ptr<Route>);
                void set_value (double, PBD::Controllable::GroupControlDisposition group_override);
@@ -511,7 +517,7 @@ public:
                void _set_value (double, PBD::Controllable::GroupControlDisposition group_override);
        };
 
-       struct MuteControllable : public RouteAutomationControl {
+       struct MuteControllable : public BooleanRouteAutomationControl {
        public:
                MuteControllable (std::string name, boost::shared_ptr<Route>);
                void set_value (double, PBD::Controllable::GroupControlDisposition group_override);
@@ -520,13 +526,12 @@ public:
 
                /* Pretend to change value, but do not affect actual route mute. */
                void set_superficial_value(bool muted);
-
        private:
                boost::weak_ptr<Route> _route;
                void _set_value (double, PBD::Controllable::GroupControlDisposition group_override);
        };
 
-       class LIBARDOUR_API PhaseControllable : public RouteAutomationControl {
+       class LIBARDOUR_API PhaseControllable : public BooleanRouteAutomationControl {
        public:
                PhaseControllable (std::string name, boost::shared_ptr<Route>);
                void set_value (double, PBD::Controllable::GroupControlDisposition group_override);
@@ -539,7 +544,7 @@ public:
                void _set_value (double, PBD::Controllable::GroupControlDisposition group_override);
        };
 
-       class LIBARDOUR_API SoloIsolateControllable : public RouteAutomationControl {
+       class LIBARDOUR_API SoloIsolateControllable : public BooleanRouteAutomationControl {
        public:
                SoloIsolateControllable (std::string name, boost::shared_ptr<Route>);
                void set_value (double, PBD::Controllable::GroupControlDisposition group_override);
@@ -549,7 +554,7 @@ public:
                void _set_value (double, PBD::Controllable::GroupControlDisposition group_override);
        };
 
-       class LIBARDOUR_API SoloSafeControllable : public RouteAutomationControl {
+       class LIBARDOUR_API SoloSafeControllable : public BooleanRouteAutomationControl {
        public:
                SoloSafeControllable (std::string name, boost::shared_ptr<Route>);
                void set_value (double, PBD::Controllable::GroupControlDisposition group_override);