summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-05-04 13:29:38 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-05-04 13:29:38 +0000
commit823bad30497b67508ed4031232049ba2f9920941 (patch)
tree2a82ac03da2d2a0e871b1519cd771384c5c5b196
parentdda06229570980a61de8a9395c1539958cc30b0f (diff)
when soloed by upstream (e.g. a track in a group solos-by-upstream the group bus), push the inverse solo change back down to everything that feeds us. this makes solo within a group work
git-svn-id: svn://localhost/ardour2/branches/3.0@7050 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--libs/ardour/route.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 243d240b75..287e3c219b 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -617,6 +617,16 @@ Route::mod_solo_by_others_upstream (int32_t delta)
_soloed_by_others_upstream += delta;
}
+ /* push the inverse solo change to everything that feeds us.
+ */
+
+ for (FedBy::iterator i = _fed_by.begin(); i != _fed_by.end(); ++i) {
+ boost::shared_ptr<Route> sr = i->r.lock();
+ if (sr) {
+ sr->mod_solo_by_others_downstream (-delta);
+ }
+ }
+
set_mute_master_solo ();
solo_changed (false, this);
}