summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pjmedia/src/pjmedia-videodev/sdl_dev.c7
-rw-r--r--pjsip-apps/src/vidgui/vidgui.cpp2
2 files changed, 9 insertions, 0 deletions
diff --git a/pjmedia/src/pjmedia-videodev/sdl_dev.c b/pjmedia/src/pjmedia-videodev/sdl_dev.c
index d9b1305c..91fb733b 100644
--- a/pjmedia/src/pjmedia-videodev/sdl_dev.c
+++ b/pjmedia/src/pjmedia-videodev/sdl_dev.c
@@ -521,6 +521,13 @@ static pj_status_t sdl_factory_destroy(pjmedia_vid_dev_factory *f)
sf->is_quitting = PJ_TRUE;
if (sf->sdl_thread) {
pj_sem_post(sf->sem);
+#if defined(PJ_DARWINOS) && PJ_DARWINOS!=0
+ /* To prevent pj_thread_join() of getting stuck if we are in
+ * the main thread and we haven't finished processing the job
+ * posted by sdl_thread.
+ */
+ CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0, false);
+#endif
pj_thread_join(sf->sdl_thread);
}
diff --git a/pjsip-apps/src/vidgui/vidgui.cpp b/pjsip-apps/src/vidgui/vidgui.cpp
index 4615ccdb..dfc809cd 100644
--- a/pjsip-apps/src/vidgui/vidgui.cpp
+++ b/pjsip-apps/src/vidgui/vidgui.cpp
@@ -104,6 +104,8 @@ void MainWin::initLayout()
void MainWin::quit()
{
+ if (preview_on)
+ preview();
pjsua_destroy();
qApp->quit();
}