projects
/
goodguy
/
history.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
merge hv v6, rework trace methods
[goodguy/history.git]
/
cinelerra-5.1
/
cinelerra
/
mwindow.C
diff --git
a/cinelerra-5.1/cinelerra/mwindow.C
b/cinelerra-5.1/cinelerra/mwindow.C
index 520d64f4aa058c264a71ef5ed581343a5385e560..4884c641fa4383242efe4f63a9ddb7f6c4381343 100644
(file)
--- a/
cinelerra-5.1/cinelerra/mwindow.C
+++ b/
cinelerra-5.1/cinelerra/mwindow.C
@@
-29,6
+29,7
@@
#include "bcdisplayinfo.h"
#include "bcsignals.h"
#include "bctimer.h"
#include "bcdisplayinfo.h"
#include "bcsignals.h"
#include "bctimer.h"
+#include "bctrace.h"
#include "bdcreate.h"
#include "brender.h"
#include "cache.h"
#include "bdcreate.h"
#include "brender.h"
#include "cache.h"
@@
-175,6
+176,7
@@
Commercials* MWindow::commercials = 0;
MWindow::MWindow()
: Thread(1, 0, 0)
{
MWindow::MWindow()
: Thread(1, 0, 0)
{
+ run_lock = new Mutex("MWindow::run_lock");
plugin_gui_lock = new Mutex("MWindow::plugin_gui_lock");
dead_plugin_lock = new Mutex("MWindow::dead_plugin_lock");
vwindows_lock = new Mutex("MWindow::vwindows_lock");
plugin_gui_lock = new Mutex("MWindow::plugin_gui_lock");
dead_plugin_lock = new Mutex("MWindow::dead_plugin_lock");
vwindows_lock = new Mutex("MWindow::vwindows_lock");
@@
-226,9
+228,8
@@
MWindow::MWindow()
// Need to delete brender temporary here.
MWindow::~MWindow()
{
// Need to delete brender temporary here.
MWindow::~MWindow()
{
+ run_lock->lock("MWindow::~MWindow");
in_destructor = 1;
in_destructor = 1;
- stop_playback(1);
- stop_brender();
//printf("MWindow::~MWindow %d\n", __LINE__);
gui->stop_drawing();
gui->remote_control->deactivate();
//printf("MWindow::~MWindow %d\n", __LINE__);
gui->stop_drawing();
gui->remote_control->deactivate();
@@
-236,9
+237,6
@@
MWindow::~MWindow()
#ifdef HAVE_DVB
gui->channel_info->stop();
#endif
#ifdef HAVE_DVB
gui->channel_info->stop();
#endif
- brender_lock->lock("MWindow::quit");
- delete brender; brender = 0;
- brender_lock->unlock();
delete create_bd; create_bd = 0;
delete create_dvd; create_dvd = 0;
delete batch_render; batch_render = 0;
delete create_bd; create_bd = 0;
delete create_dvd; create_dvd = 0;
delete batch_render; batch_render = 0;
@@
-341,23
+339,13
@@
MWindow::~MWindow()
interlace_asset_fixmethods.remove_all_objects();
sighandler->terminate();
delete sighandler;
interlace_asset_fixmethods.remove_all_objects();
sighandler->terminate();
delete sighandler;
+ delete run_lock;
}
}
-void MWindow::quit(
int unlock
)
+void MWindow::quit()
{
{
- if(unlock) gui->unlock_window();
- stop_playback(1);
-
- brender_lock->lock("MWindow::quit");
- delete brender; brender = 0;
- brender_lock->unlock();
-
- interrupt_indexes();
- clean_indexes();
- save_defaults();
gui->set_done(0);
gui->set_done(0);
- if(unlock) gui->lock_window("MWindow::quit");
}
void MWindow::init_error()
}
void MWindow::init_error()
@@
-801,6
+789,12
@@
void MWindow::init_preferences()
BC_Signals::set_trap_hook(trap_hook, this);
BC_Signals::set_catch_segv(preferences->trap_sigsegv);
BC_Signals::set_catch_intr(preferences->trap_sigintr);
BC_Signals::set_trap_hook(trap_hook, this);
BC_Signals::set_catch_segv(preferences->trap_sigsegv);
BC_Signals::set_catch_intr(preferences->trap_sigintr);
+ if( preferences->trap_sigsegv || preferences->trap_sigintr ) {
+ BC_Trace::enable_locks();
+ }
+ else {
+ BC_Trace::disable_locks();
+ }
BC_WindowBase::get_resources()->popupmenu_btnup = preferences->popupmenu_btnup;
}
BC_WindowBase::get_resources()->popupmenu_btnup = preferences->popupmenu_btnup;
}
@@
-1177,9
+1171,16
@@
int MWindow::brender_available(int position)
return result;
}
return result;
}
-void MWindow::set_brender_
start
()
+void MWindow::set_brender_
range
()
{
edl->session->brender_start = edl->local_session->get_selectionstart(1);
{
edl->session->brender_start = edl->local_session->get_selectionstart(1);
+ edl->session->brender_end = edl->local_session->get_selectionend(1);
+
+ if(EQUIV(edl->session->brender_end, edl->session->brender_start))
+ {
+ edl->session->brender_end = edl->tracks->total_video_length();
+ }
+
restart_brender();
gui->draw_overlays(1);
}
restart_brender();
gui->draw_overlays(1);
}
@@
-2097,7
+2098,18
@@
ENABLE_BUFFER
void MWindow::run()
{
void MWindow::run()
{
+ run_lock->lock("MWindow::run");
gui->run_window();
gui->run_window();
+ stop_playback(1);
+
+ brender_lock->lock("MWindow::run 1");
+ delete brender; brender = 0;
+ brender_lock->unlock();
+
+ interrupt_indexes();
+ clean_indexes();
+ save_defaults();
+ run_lock->unlock();
}
void MWindow::show_vwindow()
}
void MWindow::show_vwindow()