Allow group gain sharing + VCA again
[ardour.git] / libs / ardour / ardour / solo_control.h
index 89aa16d02277bc017d42ccf7e38f9c7565141d0e..8026e5ea26760e1346038b2f466108fbc8e11855 100644 (file)
@@ -38,6 +38,7 @@ class LIBARDOUR_API SoloControl : public SlavableAutomationControl
        SoloControl (Session& session, std::string const & name, Soloable& soloable, Muteable& m);
 
        double get_value () const;
+       double get_save_value() const { return self_soloed(); }
 
        bool can_solo() const;
 
@@ -72,7 +73,7 @@ class LIBARDOUR_API SoloControl : public SlavableAutomationControl
                return self_soloed() || get_masters_value ();
        }
        bool soloed_by_others () const {
-               return _soloed_by_others_downstream || _soloed_by_others_downstream || get_masters_value ();
+               return _soloed_by_others_downstream || _soloed_by_others_upstream || get_masters_value ();
        }
        uint32_t soloed_by_others_upstream () const {
                return _soloed_by_others_upstream;
@@ -97,7 +98,7 @@ class LIBARDOUR_API SoloControl : public SlavableAutomationControl
 
   protected:
        void actually_set_value (double, PBD::Controllable::GroupControlDisposition group_override);
-       void master_changed (bool from_self, GroupControlDisposition, boost::shared_ptr<AutomationControl> m);
+       void master_changed (bool from_self, GroupControlDisposition, boost::weak_ptr<AutomationControl> m);
        void pre_remove_master (boost::shared_ptr<AutomationControl>);
        void post_add_master (boost::shared_ptr<AutomationControl>);