fix various stuck-solo cases:
authorRobin Gareus <robin@gareus.org>
Sun, 4 Oct 2015 22:08:55 +0000 (00:08 +0200)
committerRobin Gareus <robin@gareus.org>
Sun, 4 Oct 2015 22:08:55 +0000 (00:08 +0200)
commit58d59177bbc0cc936d80efd5ec2e0a8ed368c106
tree1c0a513672e266f48ed113286b32b603ff3aaa80
parente21e7f70405567781d669a83345a0f416785040d
fix various stuck-solo cases:

* solo groups
* cancel-solo
* SIP <> AFL/PFL changes

The optimized plural-form route_solo_changed() relied on the false
premise that solo-groups and port-connections are disjoint sets.

-=-

e.g. "cancel all solo" calls set_solo(get_routes(), false);
Since All routes are affected, the "non_solo_change" set is empty, and
no changes were propagated up/downstream.

Routes that indirectly change state as group-members, wrongly end up in
the "non_solo_change" list instead of the "solo_change" list.

If a route feeds another in the same group, no changes were propagated.
libs/ardour/ardour/session.h
libs/ardour/session.cc
libs/ardour/session_rtevents.cc