add transition caching with pref, rev read frame caching, cache lock tweaks, fix...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / preferencesthread.C
index b085e13be2eee6c69612b32525afe8a4c21f9331..47f16efd8345f2594f11e081d66b6ed08ccc9ce6 100644 (file)
@@ -124,6 +124,7 @@ BC_Window* PreferencesThread::new_gui()
        redraw_overlays = 0;
        close_assets = 0;
        reload_plugins = 0;
+       reset_caches = 0;
        //int need_new_indexes = 0;
        rerender = 0;
 
@@ -237,6 +238,7 @@ int PreferencesThread::apply_settings()
        if( window ) window->lock_window("PreferencesThread::apply_settings 5");
 
        if( strcmp(preferences->theme, mwindow->preferences->theme) ||
+           strcmp(preferences->locale, mwindow->preferences->locale) ||
            strcmp(preferences->plugin_icons, mwindow->preferences->plugin_icons) ||
            preferences->awindow_picon_h != mwindow->preferences->awindow_picon_h ||
            preferences->layout_scale != mwindow->preferences->layout_scale ||
@@ -250,9 +252,15 @@ int PreferencesThread::apply_settings()
                File::setenv_path("LV2_PATH", preferences->lv2_path, 1);
                mwindow->restart_status = -1;
        }
+       if( preferences->cache_size != mwindow->preferences->cache_size ||
+           preferences->cache_transitions != mwindow->preferences->cache_transitions )
+               reset_caches = 1;
+
+       if( mwindow->preferences->perpetual_session && !preferences->perpetual_session )
+               mwindow->remove_undo_data();
 
        mwindow->edl->copy_session(edl, 1);
-       mwindow->preferences->copy_from(preferences);
+       mwindow->update_preferences(preferences);
 
        BC_Signals::set_catch_segv(mwindow->preferences->trap_sigsegv);
        BC_Signals::set_catch_intr(mwindow->preferences->trap_sigintr);
@@ -265,6 +273,8 @@ int PreferencesThread::apply_settings()
        else {
                BC_Trace::disable_locks();
        }
+       if( reset_caches )
+               mwindow->reset_caches(0);
 
        mwindow->reset_android_remote();
        int ffmpeg_early_probe = mwindow->preferences->get_file_probe_armed("FFMPEG_Early");