X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fcinelerra%2Fmwindow.C;h=bb04335f118e6b85f9bac7a95ad323fa65c5ce93;hb=d6c6d4a07f9ff4c6b8f5d034306df375815b060a;hp=4afbd81888f3f67b020d023f8c61dd7d3db5f81e;hpb=84ac8a2bb3357c04a3f67cf763b0f61ddbbd021d;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/mwindow.C b/cinelerra-5.1/cinelerra/mwindow.C index 4afbd818..bb04335f 100644 --- a/cinelerra-5.1/cinelerra/mwindow.C +++ b/cinelerra-5.1/cinelerra/mwindow.C @@ -303,7 +303,7 @@ MWindow::~MWindow() gui->del_keyboard_listener( (int (BC_WindowBase::*)(BC_WindowBase *)) &MWindowGUI::keyboard_listener); - reset_caches(); + reset_caches(0); #if 0 // release the hounds if( awindow && awindow->gui ) awindow->gui->close(0); @@ -4089,18 +4089,18 @@ void MWindow::update_preferences(Preferences *prefs) if( prefs != preferences ) preferences->copy_from(prefs); if( cwindow->playback_engine ) - cwindow->playback_engine->preferences->copy_from(prefs); + cwindow->playback_engine->update_preferences(prefs); for(int i = 0; i < vwindows.size(); i++) { VWindow *vwindow = vwindows[i]; if( !vwindow->is_running() ) continue; if( vwindow->playback_engine ) - vwindow->playback_engine->preferences->copy_from(prefs); + vwindow->playback_engine->update_preferences(prefs); } for(int i = 0; i < zwindows.size(); i++) { ZWindow *zwindow = zwindows[i]; if( !zwindow->is_running() ) continue; if( zwindow->zgui->playback_engine ) - zwindow->zgui->playback_engine->preferences->copy_from(prefs); + zwindow->zgui->playback_engine->update_preferences(prefs); } } @@ -4475,31 +4475,24 @@ int MWindow::create_aspect_ratio(float &w, float &h, int width, int height) return 0; } -void MWindow::reset_caches() +void MWindow::reset_caches(int locked) { - int locked = gui->get_window_lock(); if( locked ) gui->unlock_window(); awindow->gui->stop_vicon_drawing(1); - frame_cache->remove_all(); - wave_cache->remove_all(); - audio_cache->remove_all(); - video_cache->remove_all(); - if( cwindow->playback_engine ) { - if( cwindow->playback_engine->audio_cache ) - cwindow->playback_engine->audio_cache->remove_all(); - if( cwindow->playback_engine->video_cache ) - cwindow->playback_engine->video_cache->remove_all(); - } + if( cwindow->playback_engine ) + cwindow->playback_engine->create_cache(); for(int i = 0; i < vwindows.size(); i++) { VWindow *vwindow = vwindows[i]; if( !vwindow->is_running() ) continue; if( !vwindow->playback_engine ) continue; - if( vwindow->playback_engine->audio_cache ) - vwindow->playback_engine->audio_cache->remove_all(); - if( vwindow->playback_engine->video_cache ) - vwindow->playback_engine->video_cache->remove_all(); + vwindow->playback_engine->create_cache(); } - if( locked ) gui->lock_window("MWindow::reset_caches"); + gui->lock_window("MWindow::reset_caches"); + frame_cache->remove_all(); + wave_cache->remove_all(); + audio_cache->remove_all(); + video_cache->remove_all(); + if( !locked ) gui->unlock_window(); } void MWindow::remove_from_caches(Indexable *idxbl)