X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fcinelerra%2Fvwindow.C;h=243327cde48690b60ae7ed283ee3e956c7a5d19f;hb=d371c5ba45b7c98941a6775603eeb5c50014c438;hp=8de4eb73170154add8af0a090bb621e81107e84c;hpb=243336668c89096732786c6b3f3c5918aa2eff26;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/vwindow.C b/cinelerra-5.1/cinelerra/vwindow.C index 8de4eb73..243327cd 100644 --- a/cinelerra-5.1/cinelerra/vwindow.C +++ b/cinelerra-5.1/cinelerra/vwindow.C @@ -137,8 +137,6 @@ void VWindow::handle_done_event(int result) } } - - BC_Window* VWindow::new_gui() { //printf("VWindow::create_objects 1\n"); @@ -164,6 +162,12 @@ BC_Window* VWindow::new_gui() return gui; } +void VWindow::handle_close_event(int result) +{ + delete playback_engine; + playback_engine = 0; +} + EDL* VWindow::get_edl() { @@ -179,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) ) @@ -196,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; @@ -252,11 +264,16 @@ 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); + + 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 && @@ -282,6 +299,7 @@ void VWindow::change_source(EDL *edl) } else gui->change_source(edl, _("Viewer")); + gui->unlock_window(); } @@ -333,6 +351,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(); } }