From 78b6c9632ce42b210fae6d3697c625efab33bef9 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 25 Jul 2011 16:10:11 +0000 Subject: [PATCH] in exclusive solo mode, allow full-group solo git-svn-id: svn://localhost/ardour2/branches/3.0@9917 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/session.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index af24b737fa..2be3af3c0f 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -2331,10 +2331,16 @@ Session::route_solo_changed (bool self_solo_change, void* /*src*/, boost::weak_p delta = -1; } + RouteGroup* rg = route->route_group (); + bool leave_group_alone = (rg && rg->is_active() && rg->is_solo()); + if (delta == 1 && Config->get_exclusive_solo()) { - /* new solo: disable all other solos */ + + /* new solo: disable all other solos, but not the group if its solo-enabled */ + for (RouteList::iterator i = r->begin(); i != r->end(); ++i) { - if ((*i) == route || (*i)->solo_isolated() || (*i)->is_master() || (*i)->is_monitor() || (*i)->is_hidden()) { + if ((*i) == route || (*i)->solo_isolated() || (*i)->is_master() || (*i)->is_monitor() || (*i)->is_hidden() || + (leave_group_alone && ((*i)->route_group() == rg))) { continue; } (*i)->set_solo (false, this); @@ -2349,7 +2355,8 @@ Session::route_solo_changed (bool self_solo_change, void* /*src*/, boost::weak_p bool via_sends_only; bool in_signal_flow; - if ((*i) == route || (*i)->solo_isolated() || (*i)->is_master() || (*i)->is_monitor() || (*i)->is_hidden()) { + if ((*i) == route || (*i)->solo_isolated() || (*i)->is_master() || (*i)->is_monitor() || (*i)->is_hidden() || + (leave_group_alone && ((*i)->route_group() == rg))) { continue; }