With a large session:
Editor::insert_time()
-> Playlist::shift()
-> 4000+ regions are modified
-> 4k calls to Region::send_change()
-> --"-- Playlist::region_changed ()
-> --"-- Playlist::region_bounds_changed ()
-> --"-- Playlist::notify_contents_changed ()
-> --"-- ContentsChanged () /* EMIT SIGNAL */
-> --"-- DiskReader::playlist_modified ()
-> 4k Session::request_overwrite_buffer events are queued
The butler thread processes them all in the background, but
this also enqueues 4k+ events to the GUI event pool since the
GUI subscribed to Playlist::ContentsChanged ().
However the GUI is inside Editor::insert_time() and cannot handle
events. So they keep accumulating, and eventually hits
"POOL OUT OF MEMORY - RECOMPILE WITH LARGER SIZE!"
-=-
This fixes the issue by collecting blocking ::notify_contents_changed
until all region_changed() events are processed, and a single call
to Playlist::flush_notifications() notifies the UI and disk-reader.