fix return type of SlavableAutomationControl::get_boolean_masters() to make it usefl
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 19 Apr 2016 19:43:17 +0000 (15:43 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 31 May 2016 19:30:41 +0000 (15:30 -0400)
libs/ardour/ardour/slavable_automation_control.h
libs/ardour/automation_control.cc
libs/ardour/mute_control.cc
libs/ardour/slavable_automation_control.cc

index 1f1847fb03288615c8c9a28ef08add63e7bd05a5..5e95cba22b64ec21f4124b0a683c82ea722ed994 100644 (file)
@@ -96,7 +96,7 @@ class SlavableAutomationControl : public AutomationControl
        double get_value_locked() const;
        void   actually_set_value (double val, PBD::Controllable::GroupControlDisposition group_override);
        void   update_boolean_masters_records (boost::shared_ptr<AutomationControl>);
-       bool   get_boolean_masters () const;
+       int32_t   get_boolean_masters () const;
 
        virtual void   master_changed (bool from_self, GroupControlDisposition gcd, boost::shared_ptr<AutomationControl>);
        virtual void   recompute_masters_ratios (double val) { /* do nothing by default */}
index 8ffbd2d7df2a4cb2380fddd78d909c6c9fe882f3..d947a3599f31da1194ac7db36f9736f0ab421049 100644 (file)
@@ -284,7 +284,6 @@ AutomationControl::check_rt (double val, Controllable::GroupControlDisposition g
 {
        if (!_session.loading() && (flags() & Controllable::RealTime) && !AudioEngine::instance()->in_process_thread()) {
                /* queue change in RT context */
-               std::cerr << "::set_value (" << val << ", " << enum_2_string (gcd) << ") called for " << enum_2_string ((AutomationType) _parameter.type()) << ", queueing in RT context\n";
                _session.set_control (shared_from_this(), val, gcd);
                return true;
        }
index a345f5420350a9a0e038106fcdcb92e1016a3db0..26280d5cd5c9ebc0787ccc247a06cd72f48f52d3 100644 (file)
@@ -67,7 +67,7 @@ MuteControl::pre_remove_master (boost::shared_ptr<AutomationControl> m)
        }
 
        if (m->get_value()) {
-               if (!muted_by_self() && (muted_by_others() == 1)) {
+               if (!muted_by_self() && (get_boolean_masters() == 1)) {
                        Changed (false, Controllable::NoGroup);
                }
        }
index b9f7602dfc4e916925e873783687e4c7a4f5144e..78a1cc192d87ca11b619cf8485fa930f2dca6ae4 100644 (file)
@@ -163,19 +163,21 @@ SlavableAutomationControl::add_master (boost::shared_ptr<AutomationControl> m)
        update_boolean_masters_records (m);
 }
 
-bool
+int32_t
 SlavableAutomationControl::get_boolean_masters () const
 {
-       if (!_desc.toggled) {
-               return false;
-       }
+       int32_t n = 0;
 
-       Glib::Threads::RWLock::ReaderLock lm (master_lock);
-       for (Masters::const_iterator mr = _masters.begin(); mr != _masters.end(); ++mr) {
-               if (mr->second.yn()) {
-                       return true;
+       if (_desc.toggled) {
+               Glib::Threads::RWLock::ReaderLock lm (master_lock);
+               for (Masters::const_iterator mr = _masters.begin(); mr != _masters.end(); ++mr) {
+                       if (mr->second.yn()) {
+                               ++n;
+                       }
                }
        }
+
+       return n;
 }
 
 void