<p dir="ltr">Hello,</p>
<p dir="ltr">In principles, this is good. But are you sure Qt does not insidiously rely on the playlist still being active when shutting down?</p>
<p dir="ltr">Le 23 août 2016 15:45, Thomas Guillem <thomas@gllm.fr> a écrit :<br>
><br>
> playlist_Deactivate() is now called before interfaces are destroyed.<br>
> ---<br>
> include/vlc_playlist.h               | 1 -<br>
> modules/gui/qt/qt.cpp                | 1 -<br>
> modules/gui/skins2/src/skin_main.cpp | 3 ---<br>
> src/libvlccore.sym                   | 1 -<br>
> src/playlist/playlist_internal.h     | 1 +<br>
> src/playlist/thread.c                | 9 +++++----<br>
> 6 files changed, 6 insertions(+), 10 deletions(-)<br>
><br>
> diff --git a/include/vlc_playlist.h b/include/vlc_playlist.h<br>
> index 4363405..9e3e190 100644<br>
> --- a/include/vlc_playlist.h<br>
> +++ b/include/vlc_playlist.h<br>
> @@ -280,7 +280,6 @@ enum {<br>
> VLC_API void playlist_Lock( playlist_t * );<br>
> VLC_API void playlist_Unlock( playlist_t * );<br>
> VLC_API void playlist_AssertLocked( playlist_t * );<br>
> -VLC_API void playlist_Deactivate( playlist_t * );<br>
><br>
> /**<br>
>   * Do a playlist action.<br>
> diff --git a/modules/gui/qt/qt.cpp b/modules/gui/qt/qt.cpp<br>
> index 07b4b3a..40a8a77 100644<br>
> --- a/modules/gui/qt/qt.cpp<br>
> +++ b/modules/gui/qt/qt.cpp<br>
> @@ -440,7 +440,6 @@ static void Close( vlc_object_t *p_this )<br>
><br>
>          var_Destroy (pl, "window");<br>
>          var_Destroy (pl, "qt4-iface");<br>
> -        playlist_Deactivate (pl); /* release window provider if needed */<br>
>      }<br>
><br>
>      /* And quit */<br>
> diff --git a/modules/gui/skins2/src/skin_main.cpp b/modules/gui/skins2/src/skin_main.cpp<br>
> index 8f3da3c..650da53 100644<br>
> --- a/modules/gui/skins2/src/skin_main.cpp<br>
> +++ b/modules/gui/skins2/src/skin_main.cpp<br>
> @@ -149,9 +149,6 @@ static void Close( vlc_object_t *p_this )<br>
><br>
>      msg_Dbg( p_intf, "closing skins2 module" );<br>
><br>
> -    /* Terminate input to ensure that our window provider is released. */<br>
> -    playlist_Deactivate( p_intf->p_sys->p_playlist );<br>
> -<br>
>      vlc_mutex_lock( &skin_load.mutex );<br>
>      skin_load.intf = NULL;<br>
>      vlc_mutex_unlock( &skin_load.mutex);<br>
> diff --git a/src/libvlccore.sym b/src/libvlccore.sym<br>
> index ae86025..ba8a88d 100644<br>
> --- a/src/libvlccore.sym<br>
> +++ b/src/libvlccore.sym<br>
> @@ -333,7 +333,6 @@ playlist_Clear<br>
> playlist_Control<br>
> playlist_CurrentInput<br>
> playlist_CurrentPlayingItem<br>
> -playlist_Deactivate<br>
> playlist_DeleteFromInput<br>
> playlist_Export<br>
> playlist_GetNextLeaf<br>
> diff --git a/src/playlist/playlist_internal.h b/src/playlist/playlist_internal.h<br>
> index d655dc3..15de7ea 100644<br>
> --- a/src/playlist/playlist_internal.h<br>
> +++ b/src/playlist/playlist_internal.h<br>
> @@ -99,6 +99,7 @@ typedef struct playlist_private_t<br>
> playlist_t *playlist_Create( vlc_object_t * );<br>
> void playlist_Destroy( playlist_t * );<br>
> void playlist_Activate( playlist_t * );<br>
> +void playlist_Deactivate( playlist_t * );<br>
><br>
> /* */<br>
> playlist_item_t *playlist_ItemNewFromInput( playlist_t *p_playlist,<br>
> diff --git a/src/playlist/thread.c b/src/playlist/thread.c<br>
> index 5e198a0..42c8dba 100644<br>
> --- a/src/playlist/thread.c<br>
> +++ b/src/playlist/thread.c<br>
> @@ -69,10 +69,11 @@ void playlist_Deactivate( playlist_t *p_playlist )<br>
>      playlist_private_t *p_sys = pl_priv(p_playlist);<br>
><br>
>      PL_LOCK;<br>
> -    /* WARNING: There is a latent bug. It is assumed that only one thread will<br>
> -     * be waiting for playlist deactivation at a time. So far, that works<br>
> -     * as playlist_Deactivate() is only ever called while closing an<br>
> -     * interface and interfaces are shut down serially by intf_DestroyAll(). */<br>
> +<br>
> +    /* It is assumed that only one thread will be waiting for playlist<br>
> +     * deactivation at a time. So far, that works as playlist_Deactivate() is<br>
> +     * only ever called from libvlc_InternalCleanup() or from<br>
> +     * playlist_Destroy(), that are called from the same thread. */<br>
>      if( p_sys->killed )<br>
>      {<br>
>          PL_UNLOCK;<br>
> -- <br>
> 2.8.1<br>
><br>
> _______________________________________________<br>
> vlc-devel mailing list<br>
> To unsubscribe or modify your subscription options:<br>
> https://mailman.videolan.org/listinfo/vlc-devel<br></p>