13
0

disabled changes to make solo propagation ignore sends

git-svn-id: svn://localhost/ardour2/branches/3.0@6113 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2009-11-17 22:29:43 +00:00
parent 1474b10d39
commit d37a00ae13
3 changed files with 17 additions and 6 deletions

View File

@ -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 */

View File

@ -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;

View File

@ -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);
//}
}
}