From 12b188309df1e63cd65c7988c97d78aa857e21aa Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Wed, 25 Jun 2008 22:29:49 +0300 Subject: [PATCH] Allow more than one use of the video widget However, I suspect the Qt4 interface will break if there is more than one video output _at_the_same_time_ --- modules/gui/qt4/qt4.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/modules/gui/qt4/qt4.cpp b/modules/gui/qt4/qt4.cpp index 4255a2b0cf..d07002487c 100644 --- a/modules/gui/qt4/qt4.cpp +++ b/modules/gui/qt4/qt4.cpp @@ -333,6 +333,8 @@ static void Init( intf_thread_t *p_intf ) /* Initialize timers and the Dialog Provider */ DialogsProvider::getInstance( p_intf ); + QPointer *miP = NULL; + /* Create the normal interface in non-DP mode */ if( !p_intf->pf_show_dialog ) { @@ -341,7 +343,8 @@ static void Init( intf_thread_t *p_intf ) p_mi->show(); */ p_intf->p_sys->b_isDialogProvider = false; - val.p_address = new QPointer (p_intf->p_sys->p_mi); + miP = new QPointer (p_intf->p_sys->p_mi); + val.p_address = miP; QMutexLocker locker (&windowLock); var_Set (p_intf, "window_widget", val); windowWait.wakeAll (); @@ -403,13 +406,13 @@ static void Init( intf_thread_t *p_intf ) /* And quit */ - windowLock.lock (); - var_Get (p_intf, "window_widget", &val); - if (val.p_address) - delete (QPointer *)val.p_address; - val.p_address = NULL; - var_Set (p_intf, "window_widget", val); - windowLock.unlock(); + if (miP) + { + QMutexLocker locker (&windowLock); + val.p_address = NULL; + var_Set (p_intf, "window_widget", val); + delete miP; + } /* Destroy first the main interface because it is connected to some slots in the MainInputManager */ @@ -486,9 +489,7 @@ static int OpenWindow (vlc_object_t *obj) msg_Dbg (obj, "requesting window..."); QPointer *miP = (QPointer *)ptrval.p_address; - ptrval.p_address = NULL; - /* take ownership */ - var_Set (intf, "window_widget", ptrval); + miP = new QPointer (*miP); /* create our own copy */ vlc_object_release (intf); if (miP->isNull ()) -- 2.39.2