remove Route::listening_via_monitor()

This is better tested with direct use of the solo_control and
Config->get_solo_controls_are_listen_controls()
This commit is contained in:
Paul Davis 2016-04-21 02:02:13 -04:00
parent 01bba9f910
commit 5b5e64d860
9 changed files with 20 additions and 52 deletions

View File

@ -468,15 +468,7 @@ EditorRoutes::on_tv_solo_enable_toggled (std::string const & path_string)
RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (tv);
if (rtv != 0) {
bool newval;
if (Config->get_solo_control_is_listen_control()) {
newval = !rtv->route()->listening_via_monitor();
} else {
newval = !rtv->route()->self_soloed();
}
rtv->route()->solo_control()->set_value (newval ? 1.0 : 0.0, Controllable::UseGroup);
rtv->route()->solo_control()->set_value (rtv->route()->soloed() ? 0.0 : 1.0, Controllable::UseGroup);
}
}

View File

@ -1120,22 +1120,10 @@ RouteUI::solo_active_state (boost::shared_ptr<Route> r)
return Gtkmm2ext::Off;
}
if (Config->get_solo_control_is_listen_control()) {
if (r->listening_via_monitor()) {
return Gtkmm2ext::ExplicitActive;
} else {
return Gtkmm2ext::Off;
}
}
if (r->soloed()) {
if (!r->self_soloed()) {
return Gtkmm2ext::ImplicitActive;
} else {
return Gtkmm2ext::ExplicitActive;
}
if (r->self_soloed()) {
return Gtkmm2ext::ExplicitActive;
} else if (r->soloed_by_others()) {
return Gtkmm2ext::ImplicitActive;
} else {
return Gtkmm2ext::Off;
}

View File

@ -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);

View File

@ -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

View File

@ -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)
{

View File

@ -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()) {

View File

@ -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);
}

View File

@ -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

View File

@ -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));
}
}