projects
/
goodguy
/
cinelerra.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
improvements/fixes from MatN and Andrew related to AppImage and batch render
[goodguy/cinelerra.git]
/
cinelerra-5.1
/
guicast
/
bcdialog.C
diff --git
a/cinelerra-5.1/guicast/bcdialog.C
b/cinelerra-5.1/guicast/bcdialog.C
index ef834919c6f250388c974eae0a881a1761d2d521..0a855f68c9ca2ed109af96be92ff962094072003 100644
(file)
--- a/
cinelerra-5.1/guicast/bcdialog.C
+++ b/
cinelerra-5.1/guicast/bcdialog.C
@@
-34,6
+34,7
@@
BC_DialogThread::BC_DialogThread()
gui = 0;
startup_lock = new Condition(1, "BC_DialogThread::startup_lock");
window_lock = new Mutex("BC_DialogThread::window_lock");
gui = 0;
startup_lock = new Condition(1, "BC_DialogThread::startup_lock");
window_lock = new Mutex("BC_DialogThread::window_lock");
+ active_lock = new Mutex("BC_DialogThread::active_lock");
}
BC_DialogThread::~BC_DialogThread()
}
BC_DialogThread::~BC_DialogThread()
@@
-49,14
+50,15
@@
BC_DialogThread::~BC_DialogThread()
delete startup_lock;
delete window_lock;
delete startup_lock;
delete window_lock;
+ delete active_lock;
}
}
-void BC_DialogThread::lock_
window
(const char *location)
+void BC_DialogThread::lock_
dialog
(const char *location)
{
window_lock->lock(location);
}
{
window_lock->lock(location);
}
-void BC_DialogThread::unlock_
window
()
+void BC_DialogThread::unlock_
dialog
()
{
window_lock->unlock();
}
{
window_lock->unlock();
}
@@
-93,6
+95,7
@@
void BC_DialogThread::start()
void BC_DialogThread::run()
{
void BC_DialogThread::run()
{
+ active_lock->lock("BC_DialogThread::run");
gui = new_gui();
startup_lock->unlock();
int result = gui->run_window();
gui = new_gui();
startup_lock->unlock();
int result = gui->run_window();
@@
-105,19
+108,9
@@
void BC_DialogThread::run()
window_lock->unlock();
handle_close_event(result);
window_lock->unlock();
handle_close_event(result);
+ active_lock->unlock();
}
}
-void BC_DialogThread::lock_gui(const char *location)
-{
- window_lock->lock(location);
-}
-
-void BC_DialogThread::unlock_gui()
-{
- window_lock->unlock();
-}
-
-
BC_Window* BC_DialogThread::new_gui()
{
printf("BC_DialogThread::new_gui called\n");
BC_Window* BC_DialogThread::new_gui()
{
printf("BC_DialogThread::new_gui called\n");
@@
-139,17
+132,22
@@
void BC_DialogThread::handle_close_event(int result)
void BC_DialogThread::close_window()
{
void BC_DialogThread::close_window()
{
- lock_
window
("BC_DialogThread::close_window");
+ lock_
dialog
("BC_DialogThread::close_window");
if(gui)
{
gui->lock_window("BC_DialogThread::close_window");
gui->set_done(1);
gui->unlock_window();
}
if(gui)
{
gui->lock_window("BC_DialogThread::close_window");
gui->set_done(1);
gui->unlock_window();
}
- unlock_
window
();
+ unlock_
dialog
();
join();
}
join();
}
-
+void BC_DialogThread::join()
+{
+ if( !running() ) return;
+ active_lock->lock("BC_DialogThread::join");
+ active_lock->unlock();
+}