]> git.sesse.net Git - vlc/blobdiff - include/vlc_media_library.h
Use var_InheritString for --decklink-video-connection.
[vlc] / include / vlc_media_library.h
index 15ef0251b4883d17d330fbe0c47f7377edd5824d..1d58bcc207c45d3d063269658fe28d8953050ece 100644 (file)
@@ -33,7 +33,6 @@ extern "C" {
 # endif
 
 #include <vlc_common.h>
-#include <assert.h>
 #include <vlc_playlist.h>
 
 /*****************************************************************************
@@ -398,15 +397,15 @@ struct ml_person_t
  * @return The media library object. NULL if the media library
  * object could not be loaded
  */
-VLC_EXPORT( media_library_t*, __ml_Hold, ( vlc_object_t* p_this ) );
-#define ml_Hold( a ) __ml_Hold( VLC_OBJECT(a) )
+VLC_EXPORT( media_library_t*, ml_Hold, ( vlc_object_t* p_this ) );
+#define ml_Hold( a ) ml_Hold( VLC_OBJECT(a) )
 
 /**
  * @brief Discard your ref to media library
  * @param p_this The object holding the media library
  */
-VLC_EXPORT( void, __ml_Release, ( vlc_object_t* p_this ) );
-#define ml_Release(a) __ml_Release( VLC_OBJECT(a))
+VLC_EXPORT( void, ml_Release, ( vlc_object_t* p_this ) );
+#define ml_Release(a) ml_Release( VLC_OBJECT(a) )
 
 /**
  * @brief Create a Media Library VLC object.
@@ -414,13 +413,13 @@ VLC_EXPORT( void, __ml_Release, ( vlc_object_t* p_this ) );
  * @param psz_name Name for the module
  * @return The ML object.
  */
-VLC_EXPORT( media_library_t*, __ml_Create, ( vlc_object_t *p_this, char* psz_name ) );
+VLC_EXPORT( media_library_t*, ml_Create, ( vlc_object_t *p_this, char* psz_name ) );
 
 /**
  * @brief Destructor for the Media library singleton
  * @param p_this Parent the ML object is attached to
  */
-VLC_EXPORT( void, __ml_Destroy, ( vlc_object_t* p_this ) );
+VLC_EXPORT( void, ml_Destroy, ( vlc_object_t* p_this ) );
 
 /**
  * @brief Control the Media Library
@@ -518,14 +517,13 @@ static inline int ml_AttributeIsString( ml_select_e meta )
  */
 static inline void ml_gc_incref( ml_media_t* p_media )
 {
-    unsigned refs;
     ml_gc_object_t* p_gc = &p_media->ml_gc_data;
-    assert( p_gc );
+    if( p_gc == NULL )
+        return;
 
     vlc_spin_lock (&p_gc->spin);
-    refs = ++p_gc->refs;
+    ++p_gc->refs;
     vlc_spin_unlock (&p_gc->spin);
-    assert (refs != 1); /* there had to be a reference already */
 }
 
 /**
@@ -538,13 +536,12 @@ static inline void ml_gc_decref( ml_media_t* p_media )
     unsigned refs;
     bool pool;
     ml_gc_object_t* p_gc = &p_media->ml_gc_data;
-    assert( p_gc );
+    if( p_gc == NULL )
+        return;
 
     vlc_spin_lock (&p_gc->spin);
-    assert( p_gc->refs != 0 );
     refs = --p_gc->refs;
     pool = p_gc->pool;
-    assert( ( refs != 0 && p_gc->pool == true ) || ( refs == 0 && p_gc->pool == false )  );
     vlc_spin_unlock (&p_gc->spin);
 
     if( refs == 0 && pool == false )
@@ -708,7 +705,7 @@ static inline int ml_CopyPersons( ml_person_t** a, ml_person_t* b );
 static inline int ml_CopyMedia( ml_media_t *b, ml_media_t *a )
 {
     if( !a || !b ) return VLC_EGENERIC;
-    assert( a != b );
+    if( a == b ) return VLC_SUCCESS;
     ml_LockMedia( a );
     ml_LockMedia( b );
     b->b_sparse = a->b_sparse;
@@ -823,7 +820,7 @@ static inline int ml_FtreeHasOp( ml_ftree_t* tree )
  * If op = ML_OP_NONE, then you are connecting to a tree consisting of
  * only SPECIAL nodes.
  * If op = ML_OP_NOT, then right MUST be NULL
- * op must not be ML_OP_SPECIAL, @see __ml_FtreeSpec
+ * op must not be ML_OP_SPECIAL, @see ml_FtreeSpec
  * @param left part of the tree
  * @param right part of the tree
  * @return Pointer to new tree
@@ -841,7 +838,7 @@ VLC_EXPORT( ml_ftree_t*, ml_OpConnectChilds, ( ml_op_e op, ml_ftree_t* left,
  * @return Pointer to new tree
  * @note Use the helpers
  */
-VLC_EXPORT( ml_ftree_t*, __ml_FtreeSpec, ( ml_ftree_t* tree,
+VLC_EXPORT( ml_ftree_t*, ml_FtreeSpec, ( ml_ftree_t* tree,
                                           ml_select_e crit,
                                           int limit,
                                           char* sort ) );
@@ -867,10 +864,10 @@ static inline ml_ftree_t* ml_FtreeFastAnd( ml_ftree_t* left,
 #define ml_FtreeOr( left, right )  ml_OpConnectChilds( ML_OP_OR, left, right )
 #define ml_FtreeNot( left )        ml_OpConnectChilds( ML_OP_NOT, left, NULL )
 
-#define ml_FtreeSpecAsc( tree, str )        __ml_FtreeSpec( tree, ML_SORT_ASC, 0, str )
-#define ml_FtreeSpecDesc( tree, str )       __ml_FtreeSpec( tree, ML_SORT_DESC, 0, str )
-#define ml_FtreeSpecLimit( tree, limit )    __ml_FtreeSpec( tree, ML_LIMIT, limit, NULL )
-#define ml_FtreeSpecDistinct( tree )        __ml_FtreeSpec( tree, ML_DISTINCT, 0, NULL )
+#define ml_FtreeSpecAsc( tree, str )        ml_FtreeSpec( tree, ML_SORT_ASC, 0, str )
+#define ml_FtreeSpecDesc( tree, str )       ml_FtreeSpec( tree, ML_SORT_DESC, 0, str )
+#define ml_FtreeSpecLimit( tree, limit )    ml_FtreeSpec( tree, ML_LIMIT, limit, NULL )
+#define ml_FtreeSpecDistinct( tree )        ml_FtreeSpec( tree, ML_DISTINCT, 0, NULL )
 
 
 /*****************************************************************************
@@ -1040,12 +1037,12 @@ static inline int ml_Update( media_library_t *p_media_library,
  * @param id The id of the row to update
  * @param ... The update data. [SelectType [RoleType] Value]
  */
-#define ml_UpdateSimple( ml, sel, lval, id, ... ) \
-        __ml_UpdateSimple( ml, sel, lval, id, __VA_ARGS__, ML_END )
-VLC_EXPORT( int, __ml_UpdateSimple, ( media_library_t *p_media_library,
+VLC_EXPORT( int, ml_UpdateSimple, ( media_library_t *p_media_library,
                                      ml_select_e selected_type,
                                      const char* psz_lvalue,
                                      int id, ... ) );
+#define ml_UpdateSimple( ml, sel, lval, id, ... ) \
+        ml_UpdateSimple( ml, sel, lval, id, __VA_ARGS__, ML_END )
 
 /**
  * @brief Generic DELETE function
@@ -1100,7 +1097,8 @@ ml_Delete( media_library_t *p_media_library, vlc_array_t* p_array )
 static inline int ml_CreateAppendPersonAdv( ml_person_t **pp_person,
         const char* psz_role, const char* psz_name, int i_id )
 {
-    assert( i_id || ( psz_name && *psz_name && psz_role && *psz_role ) );
+    if( i_id == 0 || !( psz_name && *psz_name && psz_role && *psz_role ) )
+        return VLC_SUCCESS;
     if( !pp_person )
         return VLC_EGENERIC;
     if( *pp_person != NULL )