X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Fvwindow.C;h=f7e39374fd2662c71aa396057ffc62e5533ee4fd;hb=74084f4d67651fac69f5e5484d57921cb6aa6e1d;hp=a7e7fa78ea18fe341366f902323526e4ff2c9a10;hpb=2d99bb8ce591f05a31464b517d85dc2bc35b2abe;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/vwindow.C b/cinelerra-5.0/cinelerra/vwindow.C index a7e7fa78..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" @@ -46,7 +47,8 @@ #include "vwindowgui.h" -VWindow::VWindow(MWindow *mwindow) : BC_DialogThread() +VWindow::VWindow(MWindow *mwindow) + : BC_DialogThread() { this->mwindow = mwindow; gui = 0; @@ -60,10 +62,7 @@ VWindow::VWindow(MWindow *mwindow) : BC_DialogThread() VWindow::~VWindow() { - if(is_running()) { - close_window(); - join(); - } + close_window(); //printf("VWindow::~VWindow 1\n"); delete playback_engine; //printf("VWindow::~VWindow 1\n"); @@ -75,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; @@ -95,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__); } @@ -111,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