X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmwindow.C;h=c959af278e7dd832f0a173c6ba3b8df2fe8b2a50;hb=9e3d90a964c0fbe97c0b58235336a47111932d5d;hp=cf9988903e223b44a15faf73eb77086f701cd79e;hpb=32a609a6bd1181993569399ab51f314dc7cb4fba;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/mwindow.C b/cinelerra-5.1/cinelerra/mwindow.C index cf998890..c959af27 100644 --- a/cinelerra-5.1/cinelerra/mwindow.C +++ b/cinelerra-5.1/cinelerra/mwindow.C @@ -268,7 +268,9 @@ MWindow::~MWindow() delete beeper; delete create_bd; create_bd = 0; delete create_dvd; create_dvd = 0; +#ifdef HAVE_SHUTTLE delete shuttle; shuttle = 0; +#endif #ifdef HAVE_WINTV delete wintv; wintv = 0; #endif @@ -675,6 +677,7 @@ int MWindow::init_plugins(MWindow *mwindow, Preferences *preferences) int MWindow::init_ladspa_plugins(MWindow *mwindow, Preferences *preferences) { +#ifdef HAVE_LADSPA char *path = getenv("LADSPA_PATH"); char ladspa_path[BCTEXTLEN]; if( !path ) { @@ -719,6 +722,7 @@ int MWindow::init_ladspa_plugins(MWindow *mwindow, Preferences *preferences) } fclose(fp); } +#endif return 1; } @@ -742,7 +746,7 @@ void MWindow::scan_plugin_index(MWindow *mwindow, Preferences *preferences, FILE char plugin_path[BCTEXTLEN]; sprintf(plugin_path, "%s/%s", plug_dir, plug_path); FileSystem fs; - fs.set_filter( "[*.plugin][*.so]" ); + fs.set_filter( "[*.plugin][*.so][*.dll]" ); int result = fs.update(plugin_path); if( result || !fs.dir_list.total ) return; int vis_id = idx++; @@ -2139,14 +2143,12 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); session->group_number += groups; switch( edl_mode ) { case LOADMODE_EDL_CLIP: { - sprintf(new_edl->local_session->clip_title, _("Clip %d"), - session->clip_number++); - char string[BCSTRLEN]; - time_t t; time(&t); - ctime_r(&t, string); - snprintf(new_edl->local_session->clip_notes, - sizeof(new_edl->local_session->clip_notes), - +("%sFrom: %s"), string, filename); + strcpy(new_edl->local_session->clip_title, + filenames->get(i)); + struct stat st; + time_t t = !stat(filenames->get(i),&st) ? + st.st_mtime : time(&t); + ctime_r(&t, new_edl->local_session->clip_notes); switch( load_mode ) { case LOADMODE_REPLACE: case LOADMODE_REPLACE_CONCATENATE: @@ -4124,6 +4126,7 @@ void MWindow::save_backup() sprintf(string2, _("Couldn't open %s for writing."), backup_path); gui->show_message(string2); } + save_undo_data(); } void MWindow::load_backup() @@ -4151,8 +4154,8 @@ void MWindow::load_backup() void MWindow::save_undo_data() { - undo_before(); - undo_after(_("perpetual session"), LOAD_ALL); + if( stack.size() > 0 ) return; + if( !preferences->perpetual_session ) return; char perpetual_path[BCTEXTLEN]; snprintf(perpetual_path, sizeof(perpetual_path), "%s/%s", File::get_config_path(), PERPETUAL_FILE); @@ -4164,15 +4167,27 @@ void MWindow::save_undo_data() void MWindow::load_undo_data() { + if( stack.size() > 0 ) return; + if( !preferences->perpetual_session ) return; char perpetual_path[BCTEXTLEN]; snprintf(perpetual_path, sizeof(perpetual_path), "%s/%s", File::get_config_path(), PERPETUAL_FILE); FILE *fp = fopen(perpetual_path,"r"); if( !fp ) return; undo->load(fp); + undo_before(); + undo_after(_("perpetual load"), LOAD_ALL); fclose(fp); } +void MWindow::remove_undo_data() +{ + if( stack.size() > 0 ) return; + char perpetual_path[BCTEXTLEN]; + snprintf(perpetual_path, sizeof(perpetual_path), "%s/%s", + File::get_config_path(), PERPETUAL_FILE); + ::remove(perpetual_path); +} int MWindow::copy_target(const char *path, const char *target) { @@ -4276,7 +4291,10 @@ void MWindow::save_project(const char *dir, int save_mode, int overwrite, int re char progress_title[BCTEXTLEN]; sprintf(progress_title, _("Saving to %s:\n"), dir); int total_assets = save_edl->assets->total(); + gui->lock_window("MWindow::save_project"); MainProgressBar *progress = mainprogress->start_progress(progress_title, total_assets); + gui->unlock_window(); + int ret = 0; Asset *current = save_edl->assets->first; for( int i=0; !ret && current; ++i, current=NEXT ) {