X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpreferencesthread.C;h=47f16efd8345f2594f11e081d66b6ed08ccc9ce6;hb=166867a58d74619aa11aeb562a994cc364d62231;hp=e273813615b865f617e6af2a8d56f00f1514f9ce;hpb=5ec378f09aeeb646705fdb8035b39a186374fba0;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/preferencesthread.C b/cinelerra-5.1/cinelerra/preferencesthread.C index e2738136..47f16efd 100644 --- a/cinelerra-5.1/cinelerra/preferencesthread.C +++ b/cinelerra-5.1/cinelerra/preferencesthread.C @@ -102,12 +102,10 @@ PreferencesThread::PreferencesThread(MWindow *mwindow) this->mwindow = mwindow; window = 0; thread_running = 0; - confirm_dialog = 0; } PreferencesThread::~PreferencesThread() { - delete confirm_dialog; close_window(); } @@ -126,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; @@ -239,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 || @@ -252,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); @@ -267,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"); @@ -378,13 +386,6 @@ const char *PreferencesThread::busy() return 0; } -void PreferencesThread::confirm_update(const char *reason, int close) -{ - delete confirm_dialog; - confirm_dialog = new PreferencesConfirmDialog(this, reason, close); - confirm_dialog->start(); -} - const char* PreferencesThread::category_to_text(int category) { PlaybackConfig *playback_config = edl->session->playback_config; @@ -434,19 +435,17 @@ PreferencesWindow::PreferencesWindow(MWindow *mwindow, { this->mwindow = mwindow; this->thread = thread; - dialog = 0; category = 0; + dialog = 0; + confirm_dialog = 0; } PreferencesWindow::~PreferencesWindow() { lock_window("PreferencesWindow::~PreferencesWindow"); delete category; - - - if(dialog) delete dialog; - - + delete dialog; + delete confirm_dialog; for(int i = 0; i < categories.total; i++) delete categories.values[i]; unlock_window(); @@ -517,6 +516,13 @@ void PreferencesWindow::update_rates() unlock_window(); } +void PreferencesWindow::confirm_update(const char *reason, int close) +{ + delete confirm_dialog; + confirm_dialog = new PreferencesConfirmDialog(thread, reason, close); + confirm_dialog->start(); +} + int PreferencesWindow::set_current_dialog(int number) { @@ -653,7 +659,7 @@ int PreferencesApply::handle_event() { const char *reason = thread->busy(); if( reason ) - thread->confirm_update(reason, 0); + thread->window->confirm_update(reason, 0); else { thread->apply_settings(); mwindow->save_defaults(); @@ -690,7 +696,7 @@ int PreferencesOK::handle_event() { const char *reason = mwindow->restart() ? _("restart") : thread->busy(); if( reason ) - thread->confirm_update(reason, 1); + thread->window->confirm_update(reason, 1); else thread->window->set_done(0); return 1; @@ -711,6 +717,7 @@ PreferencesConfirmDialog::PreferencesConfirmDialog(PreferencesThread *thread, } PreferencesConfirmDialog::~PreferencesConfirmDialog() { + close_window(); } BC_Window *PreferencesConfirmDialog::new_gui() { @@ -720,7 +727,7 @@ BC_Window *PreferencesConfirmDialog::new_gui() } void PreferencesConfirmDialog::handle_done_event(int result) { - if( !result ) return; // no + if( result != 2 ) return; // not yes if( !close ) { thread->window->lock_window("PreferencesConfirmDialog::handle_done_event"); thread->apply_settings();