From 4975a701a31b3c7de794a85435c83f614ac530a7 Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Mon, 29 Aug 2011 02:33:50 +0000 Subject: Fixed #1354: stopping preview may hide parent window. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3728 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip-apps/src/vidgui/vidgui.cpp | 8 +++++++- pjsip-apps/src/vidgui/vidwin.cpp | 18 ++++++++---------- pjsip-apps/src/vidgui/vidwin.h | 2 +- 3 files changed, 16 insertions(+), 12 deletions(-) (limited to 'pjsip-apps') diff --git a/pjsip-apps/src/vidgui/vidgui.cpp b/pjsip-apps/src/vidgui/vidgui.cpp index 5a1e5903..be0903b6 100644 --- a/pjsip-apps/src/vidgui/vidgui.cpp +++ b/pjsip-apps/src/vidgui/vidgui.cpp @@ -220,7 +220,7 @@ void MainWin::preview() //X11 Display //status = pjsua_vid_win_set_show(wid, PJ_TRUE); //This is handled by VidWin now - //video_prev_->show(); + //video_prev_->show_sdl(); showStatus("Preview started"); previewButton_->setText(tr("Stop &Preview")); @@ -623,9 +623,15 @@ static pjsip_module mod_default_handler = NULL, /* on_tsx_state() */ }; +static int main_func(int argc, char *argv[]) +{ + return 0; +} int main(int argc, char *argv[]) { + pj_run_app(&main_func, argc, argv, 0); + /* At least on Linux, we have to initialize SDL video subsystem prior to * creating/initializing QApplication, otherwise we'll segfault miserably * in SDL_CreateWindow(). Here's a stack trace if you're interested: diff --git a/pjsip-apps/src/vidgui/vidwin.cpp b/pjsip-apps/src/vidgui/vidwin.cpp index 1148a020..654035c1 100644 --- a/pjsip-apps/src/vidgui/vidwin.cpp +++ b/pjsip-apps/src/vidgui/vidwin.cpp @@ -46,7 +46,7 @@ VidWin::VidWin(const pjmedia_vid_dev_hwnd *hwnd_, VidWin::~VidWin() { - show(false); + show_sdl(false); detach(); } @@ -72,13 +72,13 @@ bool VidWin::event(QEvent *e) break; case QEvent::Show: - show(true); + show_sdl(true); // revert to default size hint, make it resizable setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX); break; case QEvent::Hide: - show(false); + show_sdl(false); break; default: @@ -138,7 +138,7 @@ void VidWin::get_size() TRACE_("%p size = %dx%d", w, size_hint.width(), size_hint.height()); } -void VidWin::show(bool visible) +void VidWin::show_sdl(bool visible) { if (!hwnd.info.win.hwnd) return; @@ -209,18 +209,16 @@ void VidWin::get_size() TRACE_("%p size = %dx%d", 0, size_hint.width(), size_hint.height()); } -void VidWin::show(bool visible) +void VidWin::show_sdl(bool visible) { if (!hwnd.info.cocoa.window) return; NSWindow *w = (NSWindow*)hwnd.info.cocoa.window; if (visible) { - if (![w isMiniaturized]) { - [w makeKeyAndOrderFront:nil]; - } + [[w contentView]setHidden:NO]; } else { - [w orderOut:nil]; + [[w contentView]setHidden:YES]; } } @@ -284,7 +282,7 @@ void VidWin::get_size() TRACE_("%p size = %dx%d", w, size_hint.width(), size_hint.height()); } -void VidWin::show(bool visible) +void VidWin::show_sdl(bool visible) { if (!hwnd.info.x11.window) return; diff --git a/pjsip-apps/src/vidgui/vidwin.h b/pjsip-apps/src/vidgui/vidwin.h index 3602da94..b784943b 100644 --- a/pjsip-apps/src/vidgui/vidwin.h +++ b/pjsip-apps/src/vidgui/vidwin.h @@ -45,7 +45,7 @@ private: void detach(); void set_size(); void get_size(); - void show(bool visible=true); + void show_sdl(bool visible=true); }; #endif -- cgit v1.2.3