]> git.sesse.net Git - vlc/commitdiff
libvlc_wait: wait until libvlc is killed by an interface
authorRémi Denis-Courmont <rem@videolan.org>
Thu, 29 May 2008 19:48:52 +0000 (22:48 +0300)
committerRémi Denis-Courmont <rem@videolan.org>
Thu, 29 May 2008 19:48:52 +0000 (22:48 +0300)
include/vlc/libvlc.h
src/control/core.c
src/libvlc.sym

index 9d5a3db40b9155efb42852106f65bb8cd45f3900..cd81feaa89679f3bdfbb373756fb1a53fc9a07cb 100644 (file)
@@ -157,6 +157,15 @@ VLC_PUBLIC_API
 void libvlc_run_interface( libvlc_instance_t *p_instance, const char *name,
                            libvlc_exception_t *p_exception );
 
+/**
+ * Waits until an interface causes the instance to exit.
+ * You should start at least one interface first, using libvlc_add_intf().
+ *
+ * \param p_instance the instance
+ */
+VLC_PUBLIC_API
+void libvlc_wait( libvlc_instance_t *p_instance );
+
 /**
  * Retrieve libvlc version.
  *
index 068ca67fc71cbe67659a6e98a7a04e4b0df08039..5d4bf63241d1bd9ac803abd0c5eb71017a4f6c02 100644 (file)
@@ -173,6 +173,14 @@ void libvlc_run_interface( libvlc_instance_t *p_i, const char *name,
         RAISEVOID( "Interface initialization failed" );
 }
 
+void libvlc_wait( libvlc_instance_t *p_i )
+{
+    libvlc_int_t *p_libvlc = p_i->p_libvlc_int;
+    vlc_object_lock( p_libvlc );
+    while( !vlc_object_wait( p_libvlc ) );
+    vlc_object_unlock( p_libvlc );
+}
+
 int libvlc_get_vlc_id( libvlc_instance_t *p_instance )
 {
     return p_instance->p_libvlc_int->i_object_id;
index 25e0cceee52ff341f56cc781e8602cb51aa5f7c3..a7547d3459dfeb30eac9d8f130ab682a4ac16ddf 100644 (file)
@@ -203,6 +203,7 @@ libvlc_vlm_set_loop
 libvlc_vlm_set_output
 libvlc_vlm_show_media
 libvlc_vlm_stop_media
+libvlc_wait
 mediacontrol_RGBPicture__free
 mediacontrol_StreamInformation__free
 mediacontrol_display_text