]> git.sesse.net Git - vlc/blobdiff - src/control/media.c
Make sure that var_Get on a string will return a non NULL value.
[vlc] / src / control / media.c
index 6f506ea57c3130c9bf55222e1d5bb73644770ad4..400c138bf1c51d5588b624310fa0ed5973ddbb3f 100644 (file)
@@ -216,7 +216,7 @@ static void preparse_if_needed( libvlc_media_t *p_md )
     {
         playlist_PreparseEnqueue(
                 libvlc_priv (p_md->p_libvlc_instance->p_libvlc_int)->p_playlist,
-                p_md->p_input_item );
+                p_md->p_input_item, pl_Unlocked );
         p_md->b_preparsed = true;
     }
 }
@@ -240,6 +240,12 @@ libvlc_media_t * libvlc_media_new_from_input_item(
     }
 
     p_md = malloc( sizeof(libvlc_media_t) );
+    if( !p_md )
+    {
+        libvlc_exception_raise( p_e, "Not enough memory" );
+        return NULL;
+    }
+
     p_md->p_libvlc_instance = p_instance;
     p_md->p_input_item      = p_input_item;
     p_md->b_preparsed       = false;
@@ -282,7 +288,7 @@ libvlc_media_t * libvlc_media_new(
     input_item_t * p_input_item;
     libvlc_media_t * p_md;
 
-    p_input_item = input_ItemNew( p_instance->p_libvlc_int, psz_mrl, NULL );
+    p_input_item = input_item_New( p_instance->p_libvlc_int, psz_mrl, NULL );
 
     if (!p_input_item)
     {
@@ -295,7 +301,7 @@ libvlc_media_t * libvlc_media_new(
 
     /* The p_input_item is retained in libvlc_media_new_from_input_item */
     vlc_gc_decref( p_input_item );
-    
+
     return p_md;
 }
 
@@ -310,7 +316,7 @@ libvlc_media_t * libvlc_media_new_as_node(
     input_item_t * p_input_item;
     libvlc_media_t * p_md;
 
-    p_input_item = input_ItemNew( p_instance->p_libvlc_int, "vlc://nop", psz_name );
+    p_input_item = input_item_New( p_instance->p_libvlc_int, "vlc://nop", psz_name );
 
     if (!p_input_item)
     {
@@ -339,11 +345,25 @@ void libvlc_media_add_option(
                                    const char * ppsz_option,
                                    libvlc_exception_t *p_e )
 {
-    (void)p_e;
-    input_ItemAddOpt( p_md->p_input_item, ppsz_option,
-                      VLC_INPUT_OPTION_UNIQUE|VLC_INPUT_OPTION_TRUSTED );
+    VLC_UNUSED(p_e);
+    input_item_AddOption( p_md->p_input_item, ppsz_option,
+                          VLC_INPUT_OPTION_UNIQUE|VLC_INPUT_OPTION_TRUSTED );
 }
 
+/**************************************************************************
+ * Same as libvlc_media_add_option but with untrusted source.
+ **************************************************************************/
+void libvlc_media_add_option_untrusted(
+                                   libvlc_media_t * p_md,
+                                   const char * ppsz_option,
+                                   libvlc_exception_t *p_e )
+{
+    VLC_UNUSED(p_e);
+    input_item_AddOption( p_md->p_input_item, ppsz_option,
+                          VLC_INPUT_OPTION_UNIQUE );
+}
+
+
 /**************************************************************************
  * Delete a media descriptor object
  **************************************************************************/
@@ -398,13 +418,13 @@ libvlc_media_duplicate( libvlc_media_t *p_md_orig )
 }
 
 /**************************************************************************
- * Retain a media descriptor object
+ * Get mrl from a media descriptor object
  **************************************************************************/
 char *
 libvlc_media_get_mrl( libvlc_media_t * p_md,
                                  libvlc_exception_t * p_e )
 {
-    (void)p_e;
+    VLC_UNUSED(p_e);
     return input_item_GetURI( p_md->p_input_item );
 }
 
@@ -416,9 +436,8 @@ char * libvlc_media_get_meta( libvlc_media_t *p_md,
                                          libvlc_meta_t e_meta,
                                          libvlc_exception_t *p_e )
 {
-    VLC_UNUSED(p_e);
-
     char * psz_meta;
+    VLC_UNUSED(p_e);
 
     /* XXX: locking */
 
@@ -426,12 +445,12 @@ char * libvlc_media_get_meta( libvlc_media_t *p_md,
 
     psz_meta = input_item_GetMeta( p_md->p_input_item,
                                    libvlc_to_vlc_meta[e_meta] );
-    
+
     if( e_meta == libvlc_meta_ArtworkURL && !psz_meta )
     {
         playlist_AskForArtEnqueue(
                 libvlc_priv(p_md->p_libvlc_instance->p_libvlc_int)->p_playlist,
-                p_md->p_input_item );
+                p_md->p_input_item, pl_Unlocked );
     }
 
     /* Should be integrated in core */
@@ -453,7 +472,7 @@ libvlc_state_t
 libvlc_media_get_state( libvlc_media_t *p_md,
                                    libvlc_exception_t *p_e )
 {
-    (void)p_e;
+    VLC_UNUSED(p_e);
     return p_md->state;
 }
 
@@ -466,8 +485,8 @@ libvlc_media_set_state( libvlc_media_t *p_md,
                                    libvlc_state_t state,
                                    libvlc_exception_t *p_e )
 {
-    (void)p_e;
     libvlc_event_t event;
+    VLC_UNUSED(p_e);
 
     p_md->state = state;
 
@@ -508,20 +527,19 @@ libvlc_media_event_manager( libvlc_media_t * p_md,
 /**************************************************************************
  * Get duration of media object.
  **************************************************************************/
-vlc_int64_t
+int64_t
 libvlc_media_get_duration( libvlc_media_t * p_md,
                                       libvlc_exception_t * p_e )
 {
     VLC_UNUSED(p_e);
 
-    if( p_md && p_md->p_input_item)
-    {
-        return input_item_GetDuration( p_md->p_input_item );
-    }
-    else
+    if( !p_md || !p_md->p_input_item)
     {
+        libvlc_exception_raise( p_e, "No input item" );
         return -1;
     }
+
+    return input_item_GetDuration( p_md->p_input_item );
 }
 
 /**************************************************************************
@@ -533,14 +551,13 @@ libvlc_media_is_preparsed( libvlc_media_t * p_md,
 {
     VLC_UNUSED(p_e);
 
-    if( p_md && p_md->p_input_item)
-    {
-        return input_item_IsPreparsed( p_md->p_input_item );
-    }
-    else
+    if( !p_md || !p_md->p_input_item)
     {
+        libvlc_exception_raise( p_e, "No input item" );
         return false;
     }
+
+    return input_item_IsPreparsed( p_md->p_input_item );
 }
 
 /**************************************************************************
@@ -581,4 +598,3 @@ libvlc_media_get_user_data( libvlc_media_t * p_md,
         return NULL;
     }
 }
-