diff --git a/libs/ardour/internal_send.cc b/libs/ardour/internal_send.cc index b5b1ead7ab..c14198445a 100644 --- a/libs/ardour/internal_send.cc +++ b/libs/ardour/internal_send.cc @@ -110,8 +110,7 @@ InternalSend::propagate_solo () if ((*i) == _send_to || (*i)->is_master() || (*i)->is_monitor() || (*i)->is_auditioner()) { continue; } - bool sends_only; - bool does_feed = _send_to->feeds (*i, &sends_only); + bool does_feed = _send_to->feeds (*i); if (does_feed && to_soloed_upstream) { (*i)->solo_control()->mod_solo_by_others_upstream (-1); } @@ -129,9 +128,7 @@ InternalSend::propagate_solo () if (*i == _send_from || !(*i)->can_solo()) { continue; } - bool sends_only; - bool does_feed = (*i)->feeds (_send_from, &sends_only); - if (does_feed) { + if ((*i)->feeds (_send_from)) { (*i)->solo_control()->mod_solo_by_others_downstream (-1); } } diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 6ca3110151..f63c65c23e 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -756,10 +756,7 @@ Route::push_solo_isolate_upstream (int32_t delta) continue; } - bool sends_only; - bool does_feed = feeds (*i, &sends_only); - - if (does_feed /*&& !sends_only*/) { + if (feeds (*i)) { (*i)->solo_isolate_control()->mod_solo_isolated_by_upstream (delta); } } @@ -770,9 +767,6 @@ Route::push_solo_upstream (int delta) { DEBUG_TRACE (DEBUG::Solo, string_compose("\t ... INVERT push from %1\n", _name)); for (FedBy::iterator i = _fed_by.begin(); i != _fed_by.end(); ++i) { - if (i->sends_only) { - /* continue; */ - } boost::shared_ptr sr (i->r.lock()); if (sr) { sr->solo_control()->mod_solo_by_others_downstream (-delta); @@ -3701,9 +3695,7 @@ Route::input_change_handler (IOChange change, void * /*src*/) if ((*i).get() == this || (*i)->is_master() || (*i)->is_monitor() || (*i)->is_auditioner()) { continue; } - bool sends_only; - bool does_feed = (*i)->direct_feeds_according_to_reality (boost::dynamic_pointer_cast (shared_from_this()), &sends_only); - if (does_feed /*&& !sends_only*/) { + if ((*i)->direct_feeds_according_to_reality (boost::dynamic_pointer_cast (shared_from_this()))) { if ((*i)->soloed()) { ++sbou; } @@ -3746,13 +3738,12 @@ Route::input_change_handler (IOChange change, void * /*src*/) if ((*i).get() == this || (*i)->is_master() || (*i)->is_monitor() || (*i)->is_auditioner()) { continue; } - bool sends_only; - bool does_feed = feeds (*i, &sends_only); - if (delta <= 0 && does_feed /*&& !sends_only*/) { + bool does_feed = feeds (*i); + if (delta <= 0 && does_feed) { (*i)->solo_control()->mod_solo_by_others_upstream (delta); } - if (idelta < 0 && does_feed /*&& !sends_only*/) { + if (idelta < 0 && does_feed) { (*i)->solo_isolate_control()->mod_solo_isolated_by_upstream (-1); } } @@ -3799,9 +3790,7 @@ Route::output_change_handler (IOChange change, void * /*src*/) if ((*i).get() == this || (*i)->is_master() || (*i)->is_monitor() || (*i)->is_auditioner()) { continue; } - bool sends_only; - bool does_feed = direct_feeds_according_to_reality (*i, &sends_only); - if (does_feed /*&& !sends_only*/) { + if (direct_feeds_according_to_reality (*i)) { if ((*i)->soloed()) { ++sbod; break; @@ -3821,9 +3810,7 @@ Route::output_change_handler (IOChange change, void * /*src*/) if ((*i).get() == this || !can_solo()) { continue; } - bool sends_only; - bool does_feed = (*i)->feeds (shared_this, &sends_only); - if (delta != 0 && does_feed /*&& !sends_only*/) { + if (delta != 0 && (*i)->feeds (shared_this)) { (*i)->solo_control()->mod_solo_by_others_downstream (delta); } } diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 25ec932a87..4f923ac031 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -3690,7 +3690,6 @@ Session::route_solo_changed (bool self_solo_changed, Controllable::GroupControlD DEBUG_TRACE (DEBUG::Solo, string_compose ("%1\n", route->name())); for (RouteList::iterator i = r->begin(); i != r->end(); ++i) { - bool via_sends_only; bool in_signal_flow; if ((*i) == route) { @@ -3718,16 +3717,12 @@ Session::route_solo_changed (bool self_solo_changed, Controllable::GroupControlD DEBUG_TRACE (DEBUG::Solo, string_compose ("check feed from %1\n", (*i)->name())); - if ((*i)->feeds (route, &via_sends_only)) { + if ((*i)->feeds (route)) { DEBUG_TRACE (DEBUG::Solo, string_compose ("\tthere is a feed from %1\n", (*i)->name())); - if (true /*!via_sends_only*/) { - if (!route->soloed_by_others_upstream()) { - (*i)->solo_control()->mod_solo_by_others_downstream (delta); - } else { - DEBUG_TRACE (DEBUG::Solo, "\talready soloed by others upstream\n"); - } + if (!route->soloed_by_others_upstream()) { + (*i)->solo_control()->mod_solo_by_others_downstream (delta); } else { - DEBUG_TRACE (DEBUG::Solo, string_compose ("\tthere is a send-only feed from %1\n", (*i)->name())); + DEBUG_TRACE (DEBUG::Solo, "\talready soloed by others upstream\n"); } in_signal_flow = true; } else { @@ -3736,25 +3731,15 @@ Session::route_solo_changed (bool self_solo_changed, Controllable::GroupControlD DEBUG_TRACE (DEBUG::Solo, string_compose ("check feed to %1\n", (*i)->name())); - if (route->feeds (*i, &via_sends_only)) { - /* propagate solo upstream only if routing other than - sends is involved, but do consider the other route - (*i) to be part of the signal flow even if only - sends are involved. - */ - DEBUG_TRACE (DEBUG::Solo, string_compose ("%1 feeds %2 via sends only %3 sboD %4 sboU %5\n", + if (route->feeds (*i)) { + DEBUG_TRACE (DEBUG::Solo, string_compose ("%1 feeds %2 sboD %3 sboU %4\n", route->name(), (*i)->name(), - via_sends_only, route->soloed_by_others_downstream(), route->soloed_by_others_upstream())); - if (true /*!via_sends_only*/) { - //NB. Triggers Invert Push, which handles soloed by downstream - DEBUG_TRACE (DEBUG::Solo, string_compose ("\tmod %1 by %2\n", (*i)->name(), delta)); - (*i)->solo_control()->mod_solo_by_others_upstream (delta); - } else { - DEBUG_TRACE (DEBUG::Solo, string_compose ("\tfeed to %1 ignored, sends-only\n", (*i)->name())); - } + //NB. Triggers Invert Push, which handles soloed by downstream + DEBUG_TRACE (DEBUG::Solo, string_compose ("\tmod %1 by %2\n", (*i)->name(), delta)); + (*i)->solo_control()->mod_solo_by_others_upstream (delta); in_signal_flow = true; } else { DEBUG_TRACE (DEBUG::Solo, string_compose("\tno feed to %1\n", (*i)->name()) );