diff options
author | GZharun <grygoriiz@wavesglobal.com> | 2015-02-15 13:02:16 +0200 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-02-17 10:43:05 -0500 |
commit | 3dde9e969c1a775c04487501dee974d261a3f955 (patch) | |
tree | 878ab0ce08d31e9fd543bc42b093017dbf2c24dd /libs/ardour/session.cc | |
parent | 5a8270373a3caca86bb04631169763ee1786dc78 (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.cc | 16 |
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 |