From: RĂ©mi Denis-Courmont Date: Sun, 30 May 2010 17:28:35 +0000 (+0300) Subject: Add libvlc_set_exit_handler(), more powerful than libvlc_wait() X-Git-Tag: 1.2.0-pre1~6393 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=cb435e2774e43702c7b23ce9fd5bd303e300212e;p=vlc Add libvlc_set_exit_handler(), more powerful than libvlc_wait() --- diff --git a/include/vlc/libvlc.h b/include/vlc/libvlc.h index cd48aaa2ec..eb6414aafc 100644 --- a/include/vlc/libvlc.h +++ b/include/vlc/libvlc.h @@ -145,6 +145,22 @@ VLC_PUBLIC_API void libvlc_retain( libvlc_instance_t *p_instance ); VLC_PUBLIC_API int libvlc_add_intf( libvlc_instance_t *p_instance, const char *name ); +/** + * Registers a callback for the LibVLC exit event. This is mostly useful if + * you have started at least one interface with libvlc_add_intf(). + * Typically, this function will wake up your application main loop (from + * another thread). + * + * \param p_instance LibVLC instance + * \param cb callback to invoke when LibVLC wants to exit + * \param opaque data pointer for the callback + * \warning This function and libvlc_wait() cannot be used at the same time. + * Use either or none of them but not both. + */ +VLC_PUBLIC_API +void libvlc_set_exit_handler( libvlc_instance_t *p_instance, + void (*cb) (void *), void *opaque ); + /** * Waits until an interface causes the instance to exit. * You should start at least one interface first, using libvlc_add_intf(). diff --git a/src/control/core.c b/src/control/core.c index a0a5278236..54e2fd0380 100644 --- a/src/control/core.c +++ b/src/control/core.c @@ -114,6 +114,13 @@ int libvlc_add_intf( libvlc_instance_t *p_i, const char *name ) return libvlc_InternalAddIntf( p_i->p_libvlc_int, name ) ? -1 : 0; } +void libvlc_set_exit_handler( libvlc_instance_t *p_i, void (*cb) (void *), + void *data ) +{ + libvlc_int_t *p_libvlc = p_i->p_libvlc_int; + libvlc_SetExitHandler( p_libvlc, cb, data ); +} + void libvlc_wait( libvlc_instance_t *p_i ) { libvlc_int_t *p_libvlc = p_i->p_libvlc_int; diff --git a/src/libvlc.sym b/src/libvlc.sym index e976c72abf..d46a177cc8 100644 --- a/src/libvlc.sym +++ b/src/libvlc.sym @@ -217,4 +217,5 @@ libvlc_vlm_set_mux libvlc_vlm_set_output libvlc_vlm_show_media libvlc_vlm_stop_media +libvlc_set_exit_handler libvlc_wait