projects
/
goodguy
/
history.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
update ffmpeg (2.8.4->3.0) giflib,openjpeg,x264,x265
[goodguy/history.git]
/
cinelerra-5.0
/
cinelerra
/
vwindow.C
diff --git
a/cinelerra-5.0/cinelerra/vwindow.C
b/cinelerra-5.0/cinelerra/vwindow.C
index a7e7fa78ea18fe341366f902323526e4ff2c9a10..f7e39374fd2662c71aa396057ffc62e5533ee4fd 100644
(file)
--- 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 "asset.h"
#include "assets.h"
+#include "bcsignals.h"
#include "clip.h"
#include "clipedit.h"
#include "bchash.h"
#include "clip.h"
#include "clipedit.h"
#include "bchash.h"
@@
-46,7
+47,8
@@
#include "vwindowgui.h"
#include "vwindowgui.h"
-VWindow::VWindow(MWindow *mwindow) : BC_DialogThread()
+VWindow::VWindow(MWindow *mwindow)
+ : BC_DialogThread()
{
this->mwindow = mwindow;
gui = 0;
{
this->mwindow = mwindow;
gui = 0;
@@
-60,10
+62,7
@@
VWindow::VWindow(MWindow *mwindow) : BC_DialogThread()
VWindow::~VWindow()
{
VWindow::~VWindow()
{
- if(is_running()) {
- close_window();
- join();
- }
+ close_window();
//printf("VWindow::~VWindow 1\n");
delete playback_engine;
//printf("VWindow::~VWindow 1\n");
//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)
{
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(do_main_edl) mwindow->edl->remove_vwindow_edl(get_edl());
-
if(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;
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__);
if(indexable) indexable->Garbage::remove_user();
-//printf("VWindow::delete_source %d\n", __LINE__);
indexable = 0;
if(update_gui) gui->change_source(0, _("Viewer"));
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_
clos
e_event(int result)
+void VWindow::handle_
don
e_event(int result)
{
{
+ playback_engine->interrupt_playback(1);
delete_source(1, 0);
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++)
{
if( mwindow->in_destructor ) return;
int total = 0;
for(int i = 0; i < mwindow->vwindows.size(); i++)
{
-//printf("VWindow::handle_
clos
e_event %d %d\n", __LINE__, mwindow->vwindows.get(i)->is_running());
+//printf("VWindow::handle_
don
e_event %d %d\n", __LINE__, mwindow->vwindows.get(i)->is_running());
if(mwindow->vwindows.get(i)->is_running()) total++;
}
// subtract ourselves
if(mwindow->vwindows.get(i)->is_running()) total++;
}
// subtract ourselves