X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmwindow.C;h=9731b4bbcb089d48aec86b183b3bf423c9dd3c9c;hb=df72ca6732207dc25472a23169ff79ef6d4cca1c;hp=56059c677d499b4414b576dda027a793b7e0953f;hpb=f007a674187f11ab58a5aebfe1eec27a90398bcb;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/mwindow.C b/cinelerra-5.1/cinelerra/mwindow.C index 56059c67..9731b4bb 100644 --- a/cinelerra-5.1/cinelerra/mwindow.C +++ b/cinelerra-5.1/cinelerra/mwindow.C @@ -230,6 +230,7 @@ MWindow::MWindow() restart_status = 0; screens = 1; in_destructor = 0; + speed_edl = 0; } @@ -251,7 +252,7 @@ MWindow::~MWindow() commit_commercial(); if( commercials && !commercials->remove_user() ) commercials = 0; close_mixers(); - + if( speed_edl ) { speed_edl->remove_user(); speed_edl = 0; } // Save defaults for open plugins plugin_gui_lock->lock("MWindow::~MWindow"); for(int i = 0; i < plugin_guis->size(); i++) { @@ -746,7 +747,7 @@ void MWindow::add_plugins(ArrayList &plugins) void MWindow::init_plugin_tips(ArrayList &plugins, const char *lang) { const char *cfg_path = File::get_cindat_path(); - char msg_path[BCTEXTLEN]; int txt = 0; + char msg_path[BCTEXTLEN]; FILE *fp = 0; if( BC_Resources::language[0] ) { snprintf(msg_path, sizeof(msg_path), "%s/info/plugins.%s", @@ -754,7 +755,6 @@ void MWindow::init_plugin_tips(ArrayList &plugins, const char *la fp = fopen(msg_path, "r"); } if( !fp ) { - txt = 1; snprintf(msg_path, sizeof(msg_path), "%s/info/plugins.txt", cfg_path); fp = fopen(msg_path, "r"); @@ -775,9 +775,8 @@ void MWindow::init_plugin_tips(ArrayList &plugins, const char *la if( done ) { if( tp > text && *--tp == '\n' ) *tp = 0; if( title[0] ) { - tp = !txt ? title : _(title); int idx = plugins.size(); - while( --idx>=0 && strcmp(plugins[idx]->title, tp) ); + while( --idx>=0 && strcmp(plugins[idx]->title, title) ); if( idx >= 0 ) { delete [] plugins[idx]->tip; plugins[idx]->tip = cstrdup(text); @@ -1961,7 +1960,8 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); nested_edl->create_objects(); nested_edl->load_xml(&xml_file, LOAD_ALL); //printf("MWindow::load_filenames %p %s\n", nested_edl, nested_edl->project_path); - new_edl->create_nested(nested_edl, filenames->get(i)); + new_edl->create_nested(nested_edl); + new_edl->set_path(filenames->get(i)); nested_edl->Garbage::remove_user(); } else { @@ -3349,9 +3349,12 @@ void MWindow::save_backup() FileXML file; edl->optimize(); edl->set_path(session->filename); - char backup_path[BCTEXTLEN]; + char backup_path[BCTEXTLEN], backup_path1[BCTEXTLEN]; snprintf(backup_path, sizeof(backup_path), "%s/%s", File::get_config_path(), BACKUP_FILE); + snprintf(backup_path1, sizeof(backup_path1), "%s/%s", + File::get_config_path(), BACKUP_FILE1); + rename(backup_path, backup_path1); edl->save_xml(&file, backup_path); file.terminate_string(); FileSystem fs; @@ -3388,6 +3391,29 @@ void MWindow::load_backup() save_backup(); } + +void MWindow::save_undo_data() +{ + char perpetual_path[BCTEXTLEN]; + snprintf(perpetual_path, sizeof(perpetual_path), "%s/%s", + File::get_config_path(), PERPETUAL_FILE); + FILE *fp = fopen(perpetual_path,"w"); + if( !fp ) return; + undo->save(fp); + fclose(fp); +} + +void MWindow::load_undo_data() +{ + 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); + fclose(fp); +} + static inline int gcd(int m, int n) { int r;