X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Fvwindow.C;h=f7e39374fd2662c71aa396057ffc62e5533ee4fd;hp=57459ef9d154087f0e4099b64e2a11493a79be96;hb=52fcc46226f9df46f9ce9d0566dc568455a7db0b;hpb=91efd376233a15f6572e6f68d28a5bee69797e87 diff --git a/cinelerra-5.0/cinelerra/vwindow.C b/cinelerra-5.0/cinelerra/vwindow.C index 57459ef9..f7e39374 100644 --- a/cinelerra-5.0/cinelerra/vwindow.C +++ b/cinelerra-5.0/cinelerra/vwindow.C @@ -21,6 +21,7 @@ #include "asset.h" #include "assets.h" +#include "bcsignals.h" #include "clip.h" #include "clipedit.h" #include "bchash.h" @@ -73,12 +74,11 @@ VWindow::~VWindow() void VWindow::delete_source(int do_main_edl, int update_gui) { +//printf("VWindow::delete_source %d %d %p %p\n", __LINE__, gui->get_window_lock(), edl, indexable); if(do_main_edl) mwindow->edl->remove_vwindow_edl(get_edl()); - if(edl) { -//printf("VWindow::delete_source %d %p\n", __LINE__, edl); edl->Garbage::remove_user(); //printf("VWindow::delete_source %d\n", __LINE__); edl = 0; @@ -93,10 +93,10 @@ void VWindow::delete_source(int do_main_edl, int update_gui) //printf("VWindow::delete_source %d\n", __LINE__); if(indexable) indexable->Garbage::remove_user(); -//printf("VWindow::delete_source %d\n", __LINE__); indexable = 0; if(update_gui) gui->change_source(0, _("Viewer")); +//printf("VWindow::delete_source %d\n", __LINE__); } @@ -109,22 +109,17 @@ void VWindow::create_objects() } -void VWindow::handle_close_event(int result) +void VWindow::handle_done_event(int result) { + playback_engine->interrupt_playback(1); delete_source(1, 0); - delete playback_engine; - delete playback_cursor; - delete clip_edit; - playback_engine = 0; - playback_cursor = 0; - clip_edit = 0; if( mwindow->in_destructor ) return; int total = 0; for(int i = 0; i < mwindow->vwindows.size(); i++) { -//printf("VWindow::handle_close_event %d %d\n", __LINE__, mwindow->vwindows.get(i)->is_running()); +//printf("VWindow::handle_done_event %d %d\n", __LINE__, mwindow->vwindows.get(i)->is_running()); if(mwindow->vwindows.get(i)->is_running()) total++; } // subtract ourselves