X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fvwindow.C;h=451c71320e3be4f4794fb9483b9c89f1abbed6a4;hb=7ead44762b23da404eee89b63e0474153fdf58a1;hp=243327cde48690b60ae7ed283ee3e956c7a5d19f;hpb=3594cc12d62e8bf2c92e4e897aaf130645cbbc56;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/vwindow.C b/cinelerra-5.1/cinelerra/vwindow.C index 243327cd..451c7132 100644 --- a/cinelerra-5.1/cinelerra/vwindow.C +++ b/cinelerra-5.1/cinelerra/vwindow.C @@ -212,10 +212,10 @@ void VWindow::change_source(Indexable *indexable) if( playback_engine->is_playing_back ) stop_playback(1); - gui->lock_window("VWindow::change_source 2"); // if(asset && this->asset && // asset->id == this->asset->id && // asset == this->asset) return; + gui->lock_window("VWindow::change_source 2"); //printf("VWindow::change_source %d\n", __LINE__); @@ -255,7 +255,7 @@ void VWindow::change_source(Indexable *indexable) if(asset) mwindow->asset_to_edl(this->edl, asset); else - mwindow->edl_to_nested(this->edl, nested_edl); + this->edl->to_nested(nested_edl); // Update GUI gui->change_source(this->edl, title); @@ -273,13 +273,14 @@ void VWindow::change_source(EDL *edl) if( playback_engine->is_playing_back ) stop_playback(1); - gui->lock_window("VWindow::change_source 3"); //printf("VWindow::change_source %d %p\n", __LINE__, edl); // EDLs are identical // if(edl && mwindow->edl->vwindow_edl && // edl->id == mwindow->edl->vwindow_edl->id) return; if(edl && get_edl() && edl->id == get_edl()->id) return; + gui->lock_window("VWindow::change_source 3"); + delete_source(1, 0); if(edl) @@ -413,22 +414,21 @@ void VWindow::unset_inoutpoint() } } -void VWindow::copy() +void VWindow::copy(int all) { EDL *edl = get_edl(); if(edl) { - double start = edl->local_session->get_selectionstart(); - double end = edl->local_session->get_selectionend(); + double start = all ? 0 : + edl->local_session->get_selectionstart(); + double end = all ? edl->tracks->total_length() : + edl->local_session->get_selectionend(); + EDL *copy_edl = new EDL; // no parent or assets wont be copied + copy_edl->create_objects(); + copy_edl->copy_all(edl); FileXML file; - edl->copy(start, - end, - 0, - 0, - 0, - &file, - "", - 1); + copy_edl->copy(start, end, 0, &file, "", 1); + copy_edl->remove_user(); const char *file_string = file.string(); long file_length = strlen(file_string); mwindow->gui->lock_window();