]> git.sesse.net Git - vlc/blobdiff - src/control/media_list.c
libvlc: Don't refer to media_preparsing as we don't have media_parsing.
[vlc] / src / control / media_list.c
index d553536fedb57a241514a30c61283b22c70e6a22..8dc7e0c6ae6a585cb7d24d265e1d1888f4556d26 100644 (file)
@@ -124,21 +124,17 @@ notify_item_deletion( libvlc_media_list_t * p_mlist,
 
 /**************************************************************************
  *       static mlist_is_writable (private)
- *
- * Raise exception and return 0 when the media_list instance is read-only,
- * or else return 1.
  **************************************************************************/
 static inline
-int mlist_is_writable( libvlc_media_list_t *p_mlist, libvlc_exception_t *p_e )
+bool mlist_is_writable( libvlc_media_list_t *p_mlist )
 {
     if( !p_mlist||p_mlist->b_read_only )
     {
         /* We are read-only from user side */
-        libvlc_exception_raise( p_e );
         libvlc_printerr( "Attempt to write a read-only media list" );
-        return 0;
+        return false;
     }
-    return 1;
+    return true;
 }
 
 /*
@@ -151,37 +147,37 @@ int mlist_is_writable( libvlc_media_list_t *p_mlist, libvlc_exception_t *p_e )
  * Init an object.
  **************************************************************************/
 libvlc_media_list_t *
-libvlc_media_list_new( libvlc_instance_t * p_inst,
-                       libvlc_exception_t * p_e )
+libvlc_media_list_new( libvlc_instance_t * p_inst )
 {
     libvlc_media_list_t * p_mlist;
 
     p_mlist = malloc(sizeof(libvlc_media_list_t));
-    if( !p_mlist )
+    if( unlikely(p_mlist == NULL) )
+    {
+        libvlc_printerr( "Not enough memory" );
         return NULL;
+    }
 
     p_mlist->p_libvlc_instance = p_inst;
-    p_mlist->p_event_manager = libvlc_event_manager_new( p_mlist, p_inst, p_e );
+    p_mlist->p_event_manager = libvlc_event_manager_new( p_mlist, p_inst );
+    if( unlikely(p_mlist->p_event_manager == NULL) )
+    {
+        free(p_mlist);
+        return NULL;
+    }
 
     /* Code for that one should be handled in flat_media_list.c */
     p_mlist->p_flat_mlist = NULL;
     p_mlist->b_read_only = false;
 
     libvlc_event_manager_register_event_type( p_mlist->p_event_manager,
-            libvlc_MediaListItemAdded, p_e );
+            libvlc_MediaListItemAdded );
     libvlc_event_manager_register_event_type( p_mlist->p_event_manager,
-            libvlc_MediaListWillAddItem, p_e );
+            libvlc_MediaListWillAddItem );
     libvlc_event_manager_register_event_type( p_mlist->p_event_manager,
-            libvlc_MediaListItemDeleted, p_e );
+            libvlc_MediaListItemDeleted );
     libvlc_event_manager_register_event_type( p_mlist->p_event_manager,
-            libvlc_MediaListWillDeleteItem, p_e );
-
-    if( libvlc_exception_raised( p_e ) )
-    {
-        libvlc_event_manager_release( p_mlist->p_event_manager );
-        free( p_mlist );
-        return NULL;
-    }
+            libvlc_MediaListWillDeleteItem );
 
     vlc_mutex_init( &p_mlist->object_lock );
     vlc_mutex_init( &p_mlist->refcount_lock ); // FIXME: spinlock?
@@ -246,10 +242,9 @@ void libvlc_media_list_retain( libvlc_media_list_t * p_mlist )
 /**************************************************************************
  *       add_file_content (Public)
  **************************************************************************/
-void
+int
 libvlc_media_list_add_file_content( libvlc_media_list_t * p_mlist,
-                                    const char * psz_uri,
-                                    libvlc_exception_t * p_e )
+                                    const char * psz_uri )
 {
     input_item_t * p_input_item;
     libvlc_media_t * p_md;
@@ -260,28 +255,27 @@ libvlc_media_list_add_file_content( libvlc_media_list_t * p_mlist,
 
     if( !p_input_item )
     {
-        libvlc_exception_raise( p_e );
         libvlc_printerr( "Not enough memory" );
-        return;
+        return -1;
     }
 
-    p_md = libvlc_media_new_from_input_item(
-            p_mlist->p_libvlc_instance,
-            p_input_item, p_e );
-
+    p_md = libvlc_media_new_from_input_item( p_mlist->p_libvlc_instance,
+                                             p_input_item );
     if( !p_md )
     {
         vlc_gc_decref( p_input_item );
-        return;
+        return -1;
     }
 
-    libvlc_media_list_add_media( p_mlist, p_md, p_e );
-    if( libvlc_exception_raised( p_e ) )
-        return;
+    if( libvlc_media_list_add_media( p_mlist, p_md ) )
+    {
+#warning Missing error handling!
+        /* printerr and leaks */
+        return -1;
+    }
 
     input_Read( p_mlist->p_libvlc_instance->p_libvlc_int, p_input_item );
-
-    return;
+    return 0;
 }
 
 /**************************************************************************
@@ -336,13 +330,13 @@ int libvlc_media_list_count( libvlc_media_list_t * p_mlist )
  *
  * Lock should be held when entering.
  **************************************************************************/
-void libvlc_media_list_add_media(
-                                   libvlc_media_list_t * p_mlist,
-                                   libvlc_media_t * p_md,
-                                   libvlc_exception_t * p_e )
+int libvlc_media_list_add_media( libvlc_media_list_t * p_mlist,
+                                 libvlc_media_t * p_md )
 {
-    if( mlist_is_writable(p_mlist,p_e) )
-        _libvlc_media_list_add_media( p_mlist, p_md );
+    if( !mlist_is_writable(p_mlist) )
+        return -1;
+    _libvlc_media_list_add_media( p_mlist, p_md );
+    return 0;
 }
 
 /* LibVLC internal version */
@@ -363,14 +357,14 @@ void _libvlc_media_list_add_media( libvlc_media_list_t * p_mlist,
  *
  * Lock should be hold when entering.
  **************************************************************************/
-void libvlc_media_list_insert_media(
-                                   libvlc_media_list_t * p_mlist,
-                                   libvlc_media_t * p_md,
-                                   int index,
-                                   libvlc_exception_t * p_e )
+int libvlc_media_list_insert_media( libvlc_media_list_t * p_mlist,
+                                    libvlc_media_t * p_md,
+                                    int index )
 {
-    if( mlist_is_writable(p_mlist,p_e) )
-        _libvlc_media_list_insert_media( p_mlist, p_md, index );
+    if( !mlist_is_writable(p_mlist) )
+        return -1;
+    _libvlc_media_list_insert_media( p_mlist, p_md, index );
+    return 0;
 }
 
 /* LibVLC internal version */
@@ -391,26 +385,24 @@ void _libvlc_media_list_insert_media(
  *
  * Lock should be held when entering.
  **************************************************************************/
-void libvlc_media_list_remove_index( libvlc_media_list_t * p_mlist,
-                                     int index,
-                                     libvlc_exception_t * p_e )
+int libvlc_media_list_remove_index( libvlc_media_list_t * p_mlist,
+                                     int index )
 {
-    if( mlist_is_writable(p_mlist,p_e) )
-        _libvlc_media_list_remove_index( p_mlist, index, p_e );
+    if( !mlist_is_writable(p_mlist) )
+        return -1;
+    return _libvlc_media_list_remove_index( p_mlist, index );
 }
 
 /* LibVLC internal version */
-void _libvlc_media_list_remove_index( libvlc_media_list_t * p_mlist,
-                                     int index,
-                                     libvlc_exception_t * p_e )
+int _libvlc_media_list_remove_index( libvlc_media_list_t * p_mlist,
+                                     int index )
 {
     libvlc_media_t * p_md;
 
     if( index < 0 || index >= vlc_array_count( &p_mlist->items ))
     {
-        libvlc_exception_raise( p_e );
         libvlc_printerr( "Index out of bounds" );
-        return;
+        return -1;
     }
 
     p_md = vlc_array_item_at_index( &p_mlist->items, index );
@@ -420,6 +412,7 @@ void _libvlc_media_list_remove_index( libvlc_media_list_t * p_mlist,
     notify_item_deletion( p_mlist, p_md, index, EventDidHappen );
 
     libvlc_media_release( p_md );
+    return 0;
 }
 
 /**************************************************************************
@@ -429,14 +422,12 @@ void _libvlc_media_list_remove_index( libvlc_media_list_t * p_mlist,
  **************************************************************************/
 libvlc_media_t *
 libvlc_media_list_item_at_index( libvlc_media_list_t * p_mlist,
-                                 int index,
-                                 libvlc_exception_t * p_e )
+                                 int index )
 {
     libvlc_media_t * p_md;
 
     if( index < 0 || index >= vlc_array_count( &p_mlist->items ))
     {
-        libvlc_exception_raise( p_e );
         libvlc_printerr( "Index out of bounds" );
         return NULL;
     }