summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-11-25 10:41:23 +0100
committerRobin Gareus <robin@gareus.org>2016-11-25 10:41:23 +0100
commite35ce4c002e0dfb4db76a5108e0028719f469734 (patch)
tree8941b073c1cf2e76a9a47cc5ddafc0e5017b6040 /libs/ardour
parentca55fbf2f8151f4159c7fef933e3fa0bd61dbd36 (diff)
Speed up AFL/PFL changes for large sessions
update_latency_compensation() and resort_routes() are expensive and were called for every individual change.
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/session.cc11
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