ensure that Lua DSP scripts are configured (even with 0 channels)
[ardour.git] / libs / ardour / ardour / solo_control.h
index bcb01344a4f2c86bebbf2278509a148e7bfafe81..3f0f522fc3589d4bd54778893f5162c49c9fd538 100644 (file)
@@ -39,6 +39,8 @@ class LIBARDOUR_API SoloControl : public SlavableAutomationControl
 
        double get_value () const;
 
+       bool can_solo() const;
+
        /* Export additional API so that objects that only get access
         * to a Controllable/AutomationControl can do more fine-grained
         * operations with respect to solo. Obviously, they would need
@@ -60,8 +62,17 @@ class LIBARDOUR_API SoloControl : public SlavableAutomationControl
        /* API to check different aspects of solo substate
         */
 
+       bool self_soloed () const {
+               return _self_solo;
+       }
+       bool soloed_by_masters () const {
+               return get_masters_value();
+       }
+       bool soloed_by_self_or_masters () const {
+               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;
@@ -69,9 +80,6 @@ class LIBARDOUR_API SoloControl : public SlavableAutomationControl
        uint32_t soloed_by_others_downstream () const {
                return _soloed_by_others_downstream;
        }
-       bool self_soloed () const {
-               return _self_solo;
-       }
        bool soloed() const { return self_soloed() || soloed_by_others(); }
 
        /* The session object needs to respond to solo