summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-11-17 22:29:43 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-11-17 22:29:43 +0000
commitd37a00ae137a4292d4bf389357b9c3d093b8239e (patch)
treee0d5897a9ddb01eb5942ce57c41331b67a770431 /libs
parent1474b10d39873538f93a466517f518c5013d1ac3 (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.h2
-rw-r--r--libs/ardour/route.cc12
-rw-r--r--libs/ardour/session.cc9
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);
+ //}
}
}