use ForGroup to flag and detect route-group based control changes
This commit is contained in:
parent
591f92e531
commit
420cc9b447
@ -807,7 +807,7 @@ Route::set_listen (bool yn, Controllable::GroupControlDisposition group_override
|
||||
}
|
||||
|
||||
if (use_group (group_override, &RouteGroup::is_solo)) {
|
||||
_route_group->foreach_route (boost::bind (&Route::set_listen, _1, yn, Controllable::NoGroup));
|
||||
_route_group->foreach_route (boost::bind (&Route::set_listen, _1, yn, Controllable::ForGroup));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -892,6 +892,9 @@ Route::clear_all_solo_state ()
|
||||
void
|
||||
Route::set_solo (bool yn, Controllable::GroupControlDisposition group_override)
|
||||
{
|
||||
DEBUG_TRACE (DEBUG::Solo, string_compose ("%1: set solo => %2, grp ? %3 currently self-soloed ? %4\n",
|
||||
name(), yn, enum_2_string(group_override), self_soloed()));
|
||||
|
||||
if (_solo_safe) {
|
||||
DEBUG_TRACE (DEBUG::Solo, string_compose ("%1 ignore solo change due to solo-safe\n", name()));
|
||||
return;
|
||||
@ -903,13 +906,10 @@ Route::set_solo (bool yn, Controllable::GroupControlDisposition group_override)
|
||||
}
|
||||
|
||||
if (use_group (group_override, &RouteGroup::is_solo)) {
|
||||
_route_group->foreach_route (boost::bind (&Route::set_solo, _1, yn, Controllable::NoGroup));
|
||||
_route_group->foreach_route (boost::bind (&Route::set_solo, _1, yn, Controllable::ForGroup));
|
||||
return;
|
||||
}
|
||||
|
||||
DEBUG_TRACE (DEBUG::Solo, string_compose ("%1: set solo => %2, grp ? %3 currently self-soloed ? %4\n",
|
||||
name(), yn, enum_2_string(group_override), self_soloed()));
|
||||
|
||||
if (self_soloed() != yn) {
|
||||
set_self_solo (yn);
|
||||
solo_changed (true, group_override); /* EMIT SIGNAL */
|
||||
@ -1054,7 +1054,7 @@ Route::set_solo_isolated (bool yn, Controllable::GroupControlDisposition group_o
|
||||
}
|
||||
|
||||
if (use_group (group_override, &RouteGroup::is_solo)) {
|
||||
_route_group->foreach_route (boost::bind (&Route::set_solo_isolated, _1, yn, Controllable::NoGroup));
|
||||
_route_group->foreach_route (boost::bind (&Route::set_solo_isolated, _1, yn, Controllable::ForGroup));
|
||||
return;
|
||||
}
|
||||
|
||||
@ -1124,7 +1124,7 @@ void
|
||||
Route::set_mute (bool yn, Controllable::GroupControlDisposition group_override)
|
||||
{
|
||||
if (use_group (group_override, &RouteGroup::is_mute)) {
|
||||
_route_group->foreach_route (boost::bind (&Route::set_mute, _1, yn, Controllable::NoGroup));
|
||||
_route_group->foreach_route (boost::bind (&Route::set_mute, _1, yn, Controllable::ForGroup));
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,7 @@ RouteGroupMember::use_group (PBD::Controllable::GroupControlDisposition gcd, boo
|
||||
{
|
||||
bool active_for_predicate = _route_group && (_route_group->*predicate)() && _route_group->is_active();
|
||||
|
||||
return (gcd != PBD::Controllable::NoGroup) &&
|
||||
return ((gcd != PBD::Controllable::NoGroup) && (gcd != PBD::Controllable::ForGroup)) &&
|
||||
_route_group &&
|
||||
((active_for_predicate && (gcd != PBD::Controllable::InverseGroup)) ||
|
||||
(!active_for_predicate && (gcd == PBD::Controllable::InverseGroup)));
|
||||
|
@ -3701,7 +3701,7 @@ Session::route_solo_changed (bool self_solo_change, Controllable::GroupControlDi
|
||||
*/
|
||||
|
||||
RouteGroup* rg = route->route_group ();
|
||||
const bool group_already_accounted_for = route->use_group (group_override, &RouteGroup::is_solo);
|
||||
const bool group_already_accounted_for = (group_override == Controllable::ForGroup);
|
||||
|
||||
if (delta == 1 && Config->get_exclusive_solo()) {
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user