diff options
author | Robin Gareus <robin@gareus.org> | 2016-11-25 10:41:23 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-11-25 10:41:23 +0100 |
commit | e35ce4c002e0dfb4db76a5108e0028719f469734 (patch) | |
tree | 8941b073c1cf2e76a9a47cc5ddafc0e5017b6040 | |
parent | ca55fbf2f8151f4159c7fef933e3fa0bd61dbd36 (diff) |
Speed up AFL/PFL changes for large sessions
update_latency_compensation() and resort_routes() are expensive and
were called for every individual change.
-rw-r--r-- | libs/ardour/session.cc | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 0f4c5b4f73..cfb08b48ec 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -6223,11 +6223,14 @@ Session::update_route_record_state () void Session::listen_position_changed () { - boost::shared_ptr<RouteList> r = routes.reader (); - - for (RouteList::iterator i = r->begin(); i != r->end(); ++i) { - (*i)->listen_position_changed (); + { + boost::shared_ptr<RouteList> r = routes.reader (); + PBD::Unwinder<bool> uw (ignore_route_processor_changes, true); + for (RouteList::iterator i = r->begin(); i != r->end(); ++i) { + (*i)->listen_position_changed (); + } } + route_processors_changed (RouteProcessorChange ()); } void |