vlc | branch: master | Hugo Beauzée-Luyssen <[email protected]> | Thu Nov 8 16:51:33 2018 +0100| [1e3c6340763ec800ad9318cdcc9049df165ebeec] | committer: Hugo Beauzée-Luyssen
medialibrary: Allow an event to be unregistered from its callback > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1e3c6340763ec800ad9318cdcc9049df165ebeec --- include/vlc_media_library.h | 10 ++++++++++ src/libvlccore.sym | 1 + src/misc/medialibrary.c | 8 ++++++++ 3 files changed, 19 insertions(+) diff --git a/include/vlc_media_library.h b/include/vlc_media_library.h index 30079b0844..b6d65548f0 100644 --- a/include/vlc_media_library.h +++ b/include/vlc_media_library.h @@ -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 ); diff --git a/src/libvlccore.sym b/src/libvlccore.sym index c87f11c69f..6c89bc65c0 100644 --- a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -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 diff --git a/src/misc/medialibrary.c b/src/misc/medialibrary.c index a4d86d25b7..f84940e2c4 100644 --- a/src/misc/medialibrary.c +++ b/src/misc/medialibrary.c @@ -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 }; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
