From: RĂ©mi Denis-Courmont Date: Wed, 25 Jun 2008 19:29:49 +0000 (+0300) Subject: Allow more than one use of the video widget X-Git-Tag: 0.9.0-test1~121^2~7^2 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=12b188309df1e63cd65c7988c97d78aa857e21aa;p=vlc 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_ --- 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 ())