From d37a00ae137a4292d4bf389357b9c3d093b8239e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 17 Nov 2009 22:29:43 +0000 Subject: [PATCH] disabled changes to make solo propagation ignore sends git-svn-id: svn://localhost/ardour2/branches/3.0@6113 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ardour/route.h | 2 +- libs/ardour/route.cc | 12 ++++++++++-- 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, Placement p, bool active, bool aux); void drop_listen (boost::shared_ptr); - bool feeds (boost::shared_ptr); + bool feeds (boost::shared_ptr, bool* via_send_only = 0); std::set > 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 #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 other) +Route::feeds (boost::shared_ptr 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 iop; @@ -2380,6 +2385,9 @@ Route::feeds (boost::shared_ptr other) if ((iop = boost::dynamic_pointer_cast(*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 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); + //} } }