diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-11-17 22:29:43 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-11-17 22:29:43 +0000 |
commit | d37a00ae137a4292d4bf389357b9c3d093b8239e (patch) | |
tree | e0d5897a9ddb01eb5942ce57c41331b67a770431 /libs | |
parent | 1474b10d39873538f93a466517f518c5013d1ac3 (diff) |
disabled changes to make solo propagation ignore sends
git-svn-id: svn://localhost/ardour2/branches/3.0@6113 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/ardour/route.h | 2 | ||||
-rw-r--r-- | libs/ardour/route.cc | 12 | ||||
-rw-r--r-- | libs/ardour/session.cc | 9 |
3 files changed, 17 insertions, 6 deletions
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h index 51e4d99335..4743058574 100644 --- a/libs/ardour/ardour/route.h +++ b/libs/ardour/ardour/route.h @@ -263,7 +263,7 @@ class Route : public SessionObject, public AutomatableControls int listen_via (boost::shared_ptr<Route>, Placement p, bool active, bool aux); void drop_listen (boost::shared_ptr<Route>); - bool feeds (boost::shared_ptr<Route>); + bool feeds (boost::shared_ptr<Route>, bool* via_send_only = 0); std::set<boost::shared_ptr<Route> > fed_by; /* Controls (not all directly owned by the Route */ diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index ac51bcff97..009adce9c8 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -25,7 +25,6 @@ #include <sigc++/bind.h> #include "pbd/xml++.h" #include "pbd/enumwriter.h" -#include "pbd/stacktrace.h" #include "pbd/memento_command.h" #include "evoral/Curve.hpp" @@ -2364,15 +2363,21 @@ Route::set_comment (string cmt, void *src) } bool -Route::feeds (boost::shared_ptr<Route> other) +Route::feeds (boost::shared_ptr<Route> other, bool* only_send) { // cerr << _name << endl; if (_output->connected_to (other->input())) { // cerr << "\tdirect FEEDS " << other->name() << endl; + + if (only_send) { + *only_send = false; + } + return true; } + for (ProcessorList::iterator r = _processors.begin(); r != _processors.end(); r++) { boost::shared_ptr<IOProcessor> iop; @@ -2380,6 +2385,9 @@ Route::feeds (boost::shared_ptr<Route> other) if ((iop = boost::dynamic_pointer_cast<IOProcessor>(*r)) != 0) { if (iop->feeds (other)) { // cerr << "\tIOP " << iop->name() << " feeds " << other->name() << endl; + if (only_send) { + *only_send = true; + } return true; } else { // cerr << "\tIOP " << iop->name() << " does NOT feeds " << other->name() << endl; diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index c8fb202fd4..a5fbe25a8f 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -2433,10 +2433,13 @@ Session::route_solo_changed (void* /*src*/, boost::weak_ptr<Route> wpr) solo_update_disabled = true; for (RouteList::iterator i = r->begin(); i != r->end(); ++i) { + bool via_sends_only; - if ((*i)->feeds (route) && !(*i)->is_hidden() && !(*i)->is_master() && !(*i)->is_control()) { - /* do it */ - (*i)->mod_solo_level (delta); + if ((*i)->feeds (route, &via_sends_only) && !(*i)->is_hidden() && !(*i)->is_master() && !(*i)->is_control()) { + //if (!via_sends_only) { + /* do it */ + (*i)->mod_solo_level (delta); + //} } } |