Significantly speed up multiple region duplication
When multiple regions are duplicated Playlist::duplicate is called sequentially for each region. Previously that lead to a call to Playlist::flush_notifications after each step, which is rather expensive. Playlist::ContentsChanged and Playlist::LayeringChanged trigger SessionEvent::Overwrite and GUI updates.
This commit is contained in:
parent
e79d8b00f9
commit
cfca2d2af9
@ -5343,6 +5343,7 @@ Editor::duplicate_some_regions (RegionSelection& regions, float times)
|
|||||||
/* successfully inserted into set, so it's the first time we've seen this playlist */
|
/* successfully inserted into set, so it's the first time we've seen this playlist */
|
||||||
playlist->clear_changes ();
|
playlist->clear_changes ();
|
||||||
playlist->clear_owned_changes ();
|
playlist->clear_owned_changes ();
|
||||||
|
playlist->freeze ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5383,6 +5384,7 @@ Editor::duplicate_some_regions (RegionSelection& regions, float times)
|
|||||||
if (playlists.insert (playlist).second) {
|
if (playlists.insert (playlist).second) {
|
||||||
playlist->clear_changes ();
|
playlist->clear_changes ();
|
||||||
playlist->clear_owned_changes ();
|
playlist->clear_owned_changes ();
|
||||||
|
playlist->freeze ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5394,6 +5396,7 @@ Editor::duplicate_some_regions (RegionSelection& regions, float times)
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (PlaylistSet::iterator p = playlists.begin(); p != playlists.end(); ++p) {
|
for (PlaylistSet::iterator p = playlists.begin(); p != playlists.end(); ++p) {
|
||||||
|
(*p)->thaw ();
|
||||||
(*p)->rdiff_and_add_command (_session);
|
(*p)->rdiff_and_add_command (_session);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user