[vlc-devel] [PATCH 3/3] Qt, Mac: Fix regressions in the Qt4 Mac interface.

Juho Vähä-Herttua juhovh at iki.fi
Tue Nov 30 23:38:39 CET 2010


And this is of course wrong because there's double unlock of the mutex by QMutexLocker, would just locking the mutex again after returning from Thread be ok? It's all ugly but the mutex just can't be locked during Thread on Mac...

On 30.11.2010, at 23.56, Juho Vähä-Herttua <juhovh at iki.fi> wrote:

> Fixes a lockup caused by 841eb240885cbea14245dfd832c9f1ab31d12bf4 and an
> infinite recursion crash caused by 1c9669ac53e83beadcd112f909b239a9645b031c,
> both related to the OSX main thread hack.
> ---
> modules/gui/qt4/qt4.cpp |    5 ++++-
> 1 files changed, 4 insertions(+), 1 deletions(-)
> 
> diff --git a/modules/gui/qt4/qt4.cpp b/modules/gui/qt4/qt4.cpp
> index a034ce6..9e69286 100644
> --- a/modules/gui/qt4/qt4.cpp
> +++ b/modules/gui/qt4/qt4.cpp
> @@ -295,7 +295,7 @@ static bool active = false;
> #include "../../../src/control/libvlc_internal.h" /* libvlc_SetExitHandler */
> static void Abort( void *obj )
> {
> -    QVLCApp::triggerQuit();
> +    QCoreApplication::exit(0);
> }
> #endif
> 
> @@ -349,6 +349,9 @@ static int Open( vlc_object_t *p_this, bool isDialogProvider )
> #endif
>     vlc_sem_init (&ready, 0);
> #ifdef Q_WS_MAC
> +    /* Unlock the QMutexLocker mutex, no races in single thread */
> +    locker.mutex()->unlock();
> +
>     /* Run mainloop on the main thread as Cocoa requires */
>     libvlc_SetExitHandler( p_intf->p_libvlc, Abort, p_intf );
>     Thread( (void *)p_intf );
> -- 
> 1.6.5.7
> 



More information about the vlc-devel mailing list