summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-04-21 02:02:13 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-05-31 15:30:41 -0400
commit5b5e64d860f40c949cf58d75de81fc86914f1baa (patch)
treefcbd51677863e0a0cf5468dde8e489865b93d72a /libs
parent01bba9f91054db7655c8eca42901f7c579b4bd24 (diff)
remove Route::listening_via_monitor()
This is better tested with direct use of the solo_control and Config->get_solo_controls_are_listen_controls()
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/ardour/route.h2
-rw-r--r--libs/ardour/ardour/solo_control.h12
-rw-r--r--libs/ardour/route.cc10
-rw-r--r--libs/ardour/session.cc4
-rw-r--r--libs/surfaces/faderport/faderport.cc2
-rw-r--r--libs/surfaces/faderport/operations.cc10
-rw-r--r--libs/surfaces/mackie/strip.cc2
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));
}
}