projects
/
ardour.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
2e8e5f1
)
don't call shared_from_this() for every route when doing solo-downstream propagation
author
Paul Davis
<paul@linuxaudiosystems.com>
Tue, 7 Feb 2017 14:23:01 +0000
(15:23 +0100)
committer
Paul Davis
<paul@linuxaudiosystems.com>
Tue, 7 Feb 2017 15:51:32 +0000
(16:51 +0100)
libs/ardour/route.cc
patch
|
blob
|
history
diff --git
a/libs/ardour/route.cc
b/libs/ardour/route.cc
index 411f3dc80178753001bb9dd7d894b800a117bf1c..eeebc0c0de59cedabee18e8143cda5270c1191e3 100644
(file)
--- 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
_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;
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);
}
if (delta != 0 && does_feed && !sends_only) {
(*i)->solo_control()->mod_solo_by_others_downstream (delta);
}