summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2017-02-07 15:23:01 +0100
committerPaul Davis <paul@linuxaudiosystems.com>2017-02-07 16:51:32 +0100
commit08657843ac1477bb8c64791183d7dbcbceba8bce (patch)
tree77fc05b2b7d22bef25f2657ca4151d52bd6971f4
parent2e8e5f14fde562f19b2bc12b177d89e9a3acdeb4 (diff)
don't call shared_from_this() for every route when doing solo-downstream propagation
-rw-r--r--libs/ardour/route.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 411f3dc801..eeebc0c0de 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -3412,12 +3412,13 @@ Route::output_change_handler (IOChange change, void * /*src*/)
_solo_control->mod_solo_by_others_downstream (delta);
// Session::route_solo_changed() does not propagate indirect solo-changes
// propagate upstream to tracks
+ boost::shared_ptr<Route> shared_this = shared_from_this();
for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) {
if ((*i).get() == this || !can_solo()) {
continue;
}
bool sends_only;
- bool does_feed = (*i)->feeds (shared_from_this(), &sends_only);
+ bool does_feed = (*i)->feeds (shared_this, &sends_only);
if (delta != 0 && does_feed && !sends_only) {
(*i)->solo_control()->mod_solo_by_others_downstream (delta);
}