summaryrefslogtreecommitdiff
path: root/libs/ardour/session.cc
diff options
context:
space:
mode:
authorGZharun <grygoriiz@wavesglobal.com>2015-02-15 13:02:16 +0200
committerPaul Davis <paul@linuxaudiosystems.com>2015-02-17 10:43:05 -0500
commit3dde9e969c1a775c04487501dee974d261a3f955 (patch)
tree878ab0ce08d31e9fd543bc42b093017dbf2c24dd /libs/ardour/session.cc
parent5a8270373a3caca86bb04631169763ee1786dc78 (diff)
[Summary] Eliminated redundant marker update notification which lead to creation of huge amount of redundant session events
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r--libs/ardour/session.cc16
1 files changed, 12 insertions, 4 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 52c9506c54..6f897a062b 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -1474,10 +1474,18 @@ Session::_locations_changed (const Locations::LocationList& locations)
We might be re-adding a location here but it doesn't actually matter
for all the locations that the Session takes an interest in.
*/
-
- for (Locations::LocationList::const_iterator i = locations.begin(); i != locations.end(); ++i) {
- location_added (*i);
- }
+ loop_update_connections.drop_connections ();
+ mark_update_connections.drop_connections ();
+ skip_update_connections.drop_connections ();
+
+ {
+ PBD::Unwinder<bool> protect_ignore_skip_updates (_ignore_skips_updates, true);
+ for (Locations::LocationList::const_iterator i = locations.begin(); i != locations.end(); ++i) {
+ location_added (*i);
+ }
+ }
+
+ update_skips (NULL, false);
}
void