summaryrefslogtreecommitdiff
path: root/libs/ardour/session.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-10-05 00:27:48 +0200
committerRobin Gareus <robin@gareus.org>2015-10-05 00:27:48 +0200
commitc4a3291b80ecdeba23df206d454238e7e3814fe6 (patch)
tree6f3d47c4ec267b10af263c8d88e6fdb75c8e58c4 /libs/ardour/session.cc
parent58d59177bbc0cc936d80efd5ec2e0a8ed368c106 (diff)
allow grouped AFL/PFL with excl. solo
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r--libs/ardour/session.cc6
1 files changed, 4 insertions, 2 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index fd7458fec9..eb333f8e0d 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -3502,10 +3502,12 @@ Session::route_listen_changed (void* /*src*/, boost::weak_ptr<Route> wpr)
if (route->listening_via_monitor ()) {
if (Config->get_exclusive_solo()) {
- /* new listen: disable all other listen */
+ /* new listen: disable all other listen, except solo-grouped channels */
+ RouteGroup* rg = route->route_group ();
+ bool leave_group_alone = (rg && rg->is_active() && rg->is_solo());
boost::shared_ptr<RouteList> r = routes.reader ();
for (RouteList::iterator i = r->begin(); i != r->end(); ++i) {
- if ((*i) == route || (*i)->solo_isolated() || (*i)->is_master() || (*i)->is_monitor() || (*i)->is_auditioner()) {
+ if ((*i) == route || (*i)->solo_isolated() || (*i)->is_master() || (*i)->is_monitor() || (*i)->is_auditioner() || (leave_group_alone && ((*i)->route_group() == rg))) {
continue;
}
(*i)->set_listen (false, this);