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:
parent
01bba9f910
commit
5b5e64d860
@ -468,15 +468,7 @@ EditorRoutes::on_tv_solo_enable_toggled (std::string const & path_string)
|
|||||||
RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (tv);
|
RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (tv);
|
||||||
|
|
||||||
if (rtv != 0) {
|
if (rtv != 0) {
|
||||||
bool newval;
|
rtv->route()->solo_control()->set_value (rtv->route()->soloed() ? 0.0 : 1.0, Controllable::UseGroup);
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1120,22 +1120,10 @@ RouteUI::solo_active_state (boost::shared_ptr<Route> r)
|
|||||||
return Gtkmm2ext::Off;
|
return Gtkmm2ext::Off;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config->get_solo_control_is_listen_control()) {
|
if (r->self_soloed()) {
|
||||||
|
return Gtkmm2ext::ExplicitActive;
|
||||||
if (r->listening_via_monitor()) {
|
} else if (r->soloed_by_others()) {
|
||||||
return Gtkmm2ext::ExplicitActive;
|
return Gtkmm2ext::ImplicitActive;
|
||||||
} else {
|
|
||||||
return Gtkmm2ext::Off;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
if (r->soloed()) {
|
|
||||||
if (!r->self_soloed()) {
|
|
||||||
return Gtkmm2ext::ImplicitActive;
|
|
||||||
} else {
|
|
||||||
return Gtkmm2ext::ExplicitActive;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
return Gtkmm2ext::Off;
|
return Gtkmm2ext::Off;
|
||||||
}
|
}
|
||||||
|
@ -181,8 +181,6 @@ public:
|
|||||||
bool is_safe () const {
|
bool is_safe () const {
|
||||||
return _solo_safe_control->get_value();
|
return _solo_safe_control->get_value();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool listening_via_monitor () const;
|
|
||||||
void enable_monitor_send ();
|
void enable_monitor_send ();
|
||||||
|
|
||||||
void set_denormal_protection (bool yn);
|
void set_denormal_protection (bool yn);
|
||||||
|
@ -60,6 +60,15 @@ class LIBARDOUR_API SoloControl : public SlavableAutomationControl
|
|||||||
/* API to check different aspects of solo substate
|
/* 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 {
|
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_downstream || get_masters_value ();
|
||||||
}
|
}
|
||||||
@ -69,9 +78,6 @@ class LIBARDOUR_API SoloControl : public SlavableAutomationControl
|
|||||||
uint32_t soloed_by_others_downstream () const {
|
uint32_t soloed_by_others_downstream () const {
|
||||||
return _soloed_by_others_downstream;
|
return _soloed_by_others_downstream;
|
||||||
}
|
}
|
||||||
bool self_soloed () const {
|
|
||||||
return _self_solo;
|
|
||||||
}
|
|
||||||
bool soloed() const { return self_soloed() || soloed_by_others(); }
|
bool soloed() const { return self_soloed() || soloed_by_others(); }
|
||||||
|
|
||||||
/* The session object needs to respond to solo
|
/* The session object needs to respond to solo
|
||||||
|
@ -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
|
void
|
||||||
Route::push_solo_isolate_upstream (int32_t delta)
|
Route::push_solo_isolate_upstream (int32_t delta)
|
||||||
{
|
{
|
||||||
|
@ -3701,7 +3701,9 @@ Session::route_listen_changed (Controllable::GroupControlDisposition group_overr
|
|||||||
return;
|
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()) {
|
if (Config->get_exclusive_solo()) {
|
||||||
|
|
||||||
|
@ -1241,7 +1241,7 @@ void
|
|||||||
FaderPort::map_solo ()
|
FaderPort::map_solo ()
|
||||||
{
|
{
|
||||||
if (_current_route) {
|
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 {
|
} else {
|
||||||
get_button (Solo).set_led_state (_output_port, false);
|
get_button (Solo).set_led_state (_output_port, false);
|
||||||
}
|
}
|
||||||
|
@ -141,15 +141,7 @@ FaderPort::solo ()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool yn;
|
_current_route->solo_control()->set_value (_current_route->soloed() ? 0.0 : 1.0, PBD::Controllable::UseGroup);
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -285,7 +285,7 @@ void
|
|||||||
Strip::notify_solo_changed ()
|
Strip::notify_solo_changed ()
|
||||||
{
|
{
|
||||||
if (_route && _solo) {
|
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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user