]> git.sesse.net Git - vlc/commitdiff
- libvlc APIs: bug fixing, and please note that exception argument is OPTIONAL (can...
authorDamien Fouilleul <damienf@videolan.org>
Mon, 25 Jun 2007 18:06:52 +0000 (18:06 +0000)
committerDamien Fouilleul <damienf@videolan.org>
Mon, 25 Jun 2007 18:06:52 +0000 (18:06 +0000)
src/control/event.c
src/control/media_instance.c
src/control/playlist.c

index d67c148ef19070377a813b9158ece85d83484cfb..a44b247383b67fb65414a8f3377cc2f35d2bddaa 100644 (file)
@@ -89,18 +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_media_instance_t * p_mi;
     input_thread_t * p_input;
 
-    p_mi = libvlc_playlist_get_media_instance( p_instance, &p_e_unused );
+    p_mi = libvlc_playlist_get_media_instance( p_instance, NULL );
 
     if( !p_mi )
         return NULL;
 
-    p_input = libvlc_get_input_thread( p_mi, &p_e_unused );
+    p_input = libvlc_get_input_thread( p_mi, NULL );
 
-    libvlc_media_instance_destroy( p_mi );
+    libvlc_media_instance_release( p_mi );
 
     return p_input;
 }
@@ -119,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_mutex_lock( &p_instance->instance_lock );
 
     p_listitem = p_instance->p_callback_list;
index d8c9b74e0d89db986a8a696a4fb38045afedb321..f1531e2627f6ba5913574953b66bcdb49fa1441b 100644 (file)
@@ -138,12 +138,18 @@ libvlc_media_instance_t * libvlc_media_instance_new_from_input_thread(
 {
     libvlc_media_instance_t * p_mi;
 
+    if( !p_input )
+    {
+        libvlc_exception_raise( p_e, "invalid input thread" );
+        return NULL;
+    }
+
     p_mi = malloc( sizeof(libvlc_media_instance_t) );
     p_mi->p_md = libvlc_media_descriptor_new_from_input_item(
                     p_libvlc_instance,
                     p_input->p->input.p_item, p_e );
 
-    if( libvlc_exception_raised( p_e ) )
+    if( !p_mi->p_md )
     {
         free( p_mi );
         return NULL;
@@ -266,7 +272,7 @@ void libvlc_media_instance_play( libvlc_media_instance_t *p_mi,
         /* A thread alread exists, send it a play message */
         p_input_thread = libvlc_get_input_thread( p_mi, p_e );
 
-        if( libvlc_exception_raised( p_e ) )
+        if( !p_input_thread )
             return;
 
         input_Control( p_input_thread, INPUT_CONTROL_SET_STATE, PLAYING_S );
@@ -300,7 +306,7 @@ void libvlc_media_instance_pause( libvlc_media_instance_t *p_mi,
 
     p_input_thread = libvlc_get_input_thread( p_mi, p_e );
 
-    if( libvlc_exception_raised( p_e ) )
+    if( !p_input_thread )
         return;
 
     input_Control( p_input_thread, INPUT_CONTROL_SET_STATE, val );
index eaa60d0def512f9ee56eab0c4b9f99d807dc9b9c..4d453af250842b2a806ea74e85c73df829ac1d6a 100644 (file)
@@ -219,9 +219,17 @@ libvlc_media_instance_t * libvlc_playlist_get_media_instance(
     assert( PL );
 
     vlc_mutex_lock( &PL->object_lock );
-    p_mi = libvlc_media_instance_new_from_input_thread(
-                        p_instance, PL->p_input, p_e );
+    if( PL->p_input )
+    {
+        p_mi = libvlc_media_instance_new_from_input_thread(
+                            p_instance, PL->p_input, p_e );
+    }
+    else
+        /* no active input */
+        p_mi = NULL;
+
     vlc_mutex_unlock( &PL->object_lock );
 
     return p_mi;
 }
+