X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fcinelerra%2Fvwindow.C;h=d1ea6b03cc199c99cf8016d99fa8da3ce062697d;hb=b55798fc64eee00c6fab3b4763e791befb7275f9;hp=1bb3f0c355a29c8358630acdc719dc1939ef7991;hpb=8f0d97d1da0cd4cfcacf76c2c1788204749b6757;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/vwindow.C b/cinelerra-5.1/cinelerra/vwindow.C index 1bb3f0c3..d1ea6b03 100644 --- a/cinelerra-5.1/cinelerra/vwindow.C +++ b/cinelerra-5.1/cinelerra/vwindow.C @@ -183,7 +183,10 @@ Indexable* VWindow::get_source() void VWindow::change_source(int edl_number) { if(!is_running()) return; + if( playback_engine->is_playing_back ) + stop_playback(1); + gui->lock_window("VWindow::change_source 1"); //printf("VWindow::change_source %d %p\n", __LINE__, mwindow->edl->get_vwindow_edl(edl_number)); if( edl_number >= 0 && edl_number < mwindow->edl->total_vwindow_edls() && mwindow->edl->get_vwindow_edl(edl_number) ) @@ -200,11 +203,16 @@ void VWindow::change_source(int edl_number) // indexable = 0; // mwindow->edl->vwindow_edl_shared = 0; } + gui->unlock_window(); } void VWindow::change_source(Indexable *indexable) { if(!running()) return; + 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; @@ -247,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); @@ -256,17 +264,23 @@ void VWindow::change_source(Indexable *indexable) //printf("VWindow::change_source 2\n"); + gui->unlock_window(); } void VWindow::change_source(EDL *edl) { if(!running()) return; + if( playback_engine->is_playing_back ) + stop_playback(1); + //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) @@ -286,6 +300,7 @@ void VWindow::change_source(EDL *edl) } else gui->change_source(edl, _("Viewer")); + gui->unlock_window(); } @@ -337,6 +352,7 @@ void VWindow::update_position(int change_type, double position = edl->local_session->get_selectionstart(1); if(lock_window) gui->lock_window("VWindow::update_position"); gui->clock->update(position); + gui->timebar->update(1); if(lock_window) gui->unlock_window(); } } @@ -406,14 +422,7 @@ void VWindow::copy() double start = edl->local_session->get_selectionstart(); double end = edl->local_session->get_selectionend(); FileXML file; - edl->copy(start, - end, - 0, - 0, - 0, - &file, - "", - 1); + edl->copy(start, end, 0, &file, "", 1); const char *file_string = file.string(); long file_length = strlen(file_string); mwindow->gui->lock_window();