diff options
-rw-r--r-- | pjmedia/src/pjmedia-videodev/sdl_dev.c | 7 | ||||
-rw-r--r-- | pjsip-apps/src/vidgui/vidgui.cpp | 2 |
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(); } |