]> git.sesse.net Git - vlc/blobdiff - src/control/event.c
control/event.c: Make sure intall_input_event returns a value.
[vlc] / src / control / event.c
index 5f3c6703ac67d40a169df0ab60984588084d3135..14f4e83772506803148e9c428beab67687f7c4c6 100644 (file)
@@ -89,16 +89,17 @@ static int handle_event( vlc_object_t *p_this, char const *psz_cmd,
  **************************************************************************/
 static input_thread_t * get_input(libvlc_instance_t * p_instance)
 {
-    libvlc_exception_t p_e_unused; /* FIXME: error checking here */
-    libvlc_input_t * p_libvlc_input = libvlc_playlist_get_input( p_instance, &p_e_unused );
+    libvlc_media_instance_t * p_mi;
     input_thread_t * p_input;
 
-    if( !p_libvlc_input )
+    p_mi = libvlc_playlist_get_media_instance( p_instance, NULL );
+
+    if( !p_mi )
         return NULL;
-    
-    p_input = libvlc_get_input_thread( p_libvlc_input, &p_e_unused );
 
-    libvlc_input_free(p_libvlc_input);
+    p_input = libvlc_get_input_thread( p_mi, NULL );
+
+    libvlc_media_instance_release( p_mi );
 
     return p_input;
 }
@@ -117,6 +118,9 @@ static int install_input_event( vlc_object_t *p_this, char const *psz_cmd,
     struct libvlc_callback_entry_list_t *p_listitem;
     input_thread_t * p_input = get_input( p_instance );
 
+    if( !p_input )
+        return VLC_SUCCESS;
+
     vlc_mutex_lock( &p_instance->instance_lock );
 
     p_listitem = p_instance->p_callback_list;
@@ -210,6 +214,8 @@ void libvlc_event_init( libvlc_instance_t *p_instance, libvlc_exception_t *p_e )
 {
     playlist_t *p_playlist = p_instance->p_libvlc_int->p_playlist;
 
+    p_instance->p_callback_list = NULL;
+
     if( !p_playlist )
         RAISEVOID ("Can't listen to input event");