diff options
author | Robin Gareus <robin@gareus.org> | 2015-10-05 00:27:48 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-10-05 00:27:48 +0200 |
commit | c4a3291b80ecdeba23df206d454238e7e3814fe6 (patch) | |
tree | 6f3d47c4ec267b10af263c8d88e6fdb75c8e58c4 | |
parent | 58d59177bbc0cc936d80efd5ec2e0a8ed368c106 (diff) |
allow grouped AFL/PFL with excl. solo
-rw-r--r-- | libs/ardour/session.cc | 6 |
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); |