medialibrary: Allow an event to be unregistered from its callback

This commit is contained in:
Hugo Beauzée-Luyssen 2018-11-08 16:51:33 +01:00
parent f1128968b3
commit 1e3c634076
3 changed files with 19 additions and 0 deletions

View File

@ -719,6 +719,16 @@ vlc_ml_event_register_callback( vlc_medialibrary_t* p_ml, vlc_ml_callback_t cb,
*/
VLC_API void vlc_ml_event_unregister_callback( vlc_medialibrary_t* p_ml,
vlc_ml_event_callback_t* p_callback );
/**
* \brief Unregisters a medialibrary callback from the said callback.
* \param p_callback The handle returned by vlc_ml_register_callback
*
* This must only be called synchronously from the callback function provided to
* vlc_ml_event_register_callback
* The p_callback handle must be considered invalid when this function returns
*/
VLC_API void vlc_ml_event_unregister_from_callback( vlc_medialibrary_t* p_ml,
vlc_ml_event_callback_t* p_callback );
VLC_API void vlc_ml_show_release( vlc_ml_show_t* p_show );

View File

@ -599,6 +599,7 @@ vlc_ml_control
vlc_ml_list
vlc_ml_event_register_callback
vlc_ml_event_unregister_callback
vlc_ml_event_unregister_from_callback
vlc_ml_show_release
vlc_ml_artist_release
vlc_ml_genre_release

View File

@ -87,6 +87,14 @@ void vlc_ml_event_unregister_callback( vlc_medialibrary_t* p_ml,
free( p_cb );
}
void vlc_ml_event_unregister_from_callback( vlc_medialibrary_t* p_ml,
vlc_ml_event_callback_t* p_cb )
{
vlc_mutex_assert( &p_ml->lock );
vlc_list_remove( &p_cb->node );
free( p_cb );
}
static const vlc_medialibrary_callbacks_t callbacks = {
.pf_send_event = &vlc_ml_event_send
};