diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/route.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/solo_control.h | 12 | ||||
-rw-r--r-- | libs/ardour/route.cc | 10 | ||||
-rw-r--r-- | libs/ardour/session.cc | 4 | ||||
-rw-r--r-- | libs/surfaces/faderport/faderport.cc | 2 | ||||
-rw-r--r-- | libs/surfaces/faderport/operations.cc | 10 | ||||
-rw-r--r-- | libs/surfaces/mackie/strip.cc | 2 |
7 files changed, 15 insertions, 27 deletions
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index d93883b600..46c5b1f3c7 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -181,8 +181,6 @@ public: bool is_safe () const { return _solo_safe_control->get_value(); } - - bool listening_via_monitor () const; void enable_monitor_send (); void set_denormal_protection (bool yn); diff --git a/libs/ardour/ardour/solo_control.h b/libs/ardour/ardour/solo_control.h index bcb01344a4..24b8353dc1 100644 --- a/libs/ardour/ardour/solo_control.h +++ b/libs/ardour/ardour/solo_control.h @@ -60,6 +60,15 @@ 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 (); } @@ -69,9 +78,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 diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index fef9fb507b..64f8764303 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -759,16 +759,6 @@ Route::solo_control_changed (bool, Controllable::GroupControlDisposition) } } -bool -Route::listening_via_monitor () const -{ - if (_monitor_send) { - return _monitor_send->active (); - } else { - return false; - } -} - void Route::push_solo_isolate_upstream (int32_t delta) { diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index c207934534..f706dd00ee 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -3701,7 +3701,9 @@ Session::route_listen_changed (Controllable::GroupControlDisposition group_overr return; } - if (route->listening_via_monitor ()) { + assert (Config->get_solo_control_is_listen_control()); + + if (route->solo_control()->soloed_by_self_or_masters()) { if (Config->get_exclusive_solo()) { diff --git a/libs/surfaces/faderport/faderport.cc b/libs/surfaces/faderport/faderport.cc index 1cc47b52e1..3d549348f4 100644 --- a/libs/surfaces/faderport/faderport.cc +++ b/libs/surfaces/faderport/faderport.cc @@ -1241,7 +1241,7 @@ void FaderPort::map_solo () { if (_current_route) { - get_button (Solo).set_led_state (_output_port, _current_route->soloed() || _current_route->listening_via_monitor()); + get_button (Solo).set_led_state (_output_port, _current_route->soloed()); } else { get_button (Solo).set_led_state (_output_port, false); } diff --git a/libs/surfaces/faderport/operations.cc b/libs/surfaces/faderport/operations.cc index 592b26da23..ec60727392 100644 --- a/libs/surfaces/faderport/operations.cc +++ b/libs/surfaces/faderport/operations.cc @@ -141,15 +141,7 @@ FaderPort::solo () return; } - bool yn; - - if (Config->get_solo_control_is_listen_control()) { - yn = !_current_route->listening_via_monitor(); - } else { - yn = !_current_route->soloed(); - } - - _current_route->solo_control()->set_value (yn ? 1.0 : 0.0, PBD::Controllable::UseGroup); + _current_route->solo_control()->set_value (_current_route->soloed() ? 0.0 : 1.0, PBD::Controllable::UseGroup); } void diff --git a/libs/surfaces/mackie/strip.cc b/libs/surfaces/mackie/strip.cc index 0062c3b4fb..9c3fc21bda 100644 --- a/libs/surfaces/mackie/strip.cc +++ b/libs/surfaces/mackie/strip.cc @@ -285,7 +285,7 @@ void Strip::notify_solo_changed () { if (_route && _solo) { - _surface->write (_solo->set_state ((_route->soloed() || _route->listening_via_monitor()) ? on : off)); + _surface->write (_solo->set_state (_route->soloed() ? on : off)); } } |