don't call shared_from_this() for every route when doing solo-downstream propagation
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 7 Feb 2017 14:23:01 +0000 (15:23 +0100)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 7 Feb 2017 15:51:32 +0000 (16:51 +0100)
libs/ardour/route.cc

index 411f3dc80178753001bb9dd7d894b800a117bf1c..eeebc0c0de59cedabee18e8143cda5270c1191e3 100644 (file)
@@ -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);
                                }