X-Git-Url: https://cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fplaybackengine.C;h=b15edd62c1636d0de0b135b479d35d97fb4c7071;hb=22c6251d37911a11e322bf7518e6a992ea0bb6c7;hp=82bd7bb6587b930b77caa7f4da7673255539b3a3;hpb=3836e2ca418201dccf1101947269fb26debb3cb4;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/playbackengine.C b/cinelerra-5.1/cinelerra/playbackengine.C index 82bd7bb6..b15edd62 100644 --- a/cinelerra-5.1/cinelerra/playbackengine.C +++ b/cinelerra-5.1/cinelerra/playbackengine.C @@ -71,6 +71,7 @@ PlaybackEngine::PlaybackEngine(MWindow *mwindow, Canvas *output) tracking_done = new Condition(1, "PlaybackEngine::tracking_done"); pause_lock = new Condition(0, "PlaybackEngine::pause_lock"); start_lock = new Condition(0, "PlaybackEngine::start_lock"); + cache_lock = new Mutex("PlaybackEngine::cache_lock"); input_lock = new Condition(1, "PlaybackEngine::input_lock"); output_lock = new Condition(0, "PlaybackEngine::output_lock", 1); @@ -93,6 +94,7 @@ PlaybackEngine::~PlaybackEngine() delete tracking_done; delete pause_lock; delete start_lock; + delete cache_lock; delete renderengine_lock; delete command; delete next_command; @@ -164,12 +166,14 @@ void PlaybackEngine::wait_render_engine() void PlaybackEngine::create_cache() { + cache_lock->lock("PlaybackEngine::create_cache"); if( audio_cache ) audio_cache->remove_user(); if( video_cache ) video_cache->remove_user(); audio_cache = new CICache(preferences); video_cache = new CICache(preferences); + cache_lock->unlock(); }