X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=include%2Fvlc_media_library.h;h=1d58bcc207c45d3d063269658fe28d8953050ece;hb=c60652e38ac6afd74bd8225e9dae5406f13aaa4f;hp=15ef0251b4883d17d330fbe0c47f7377edd5824d;hpb=49fd520ae96e62938038a750c06c784e5eb3d22e;p=vlc diff --git a/include/vlc_media_library.h b/include/vlc_media_library.h index 15ef0251b4..1d58bcc207 100644 --- a/include/vlc_media_library.h +++ b/include/vlc_media_library.h @@ -33,7 +33,6 @@ extern "C" { # endif #include -#include #include /***************************************************************************** @@ -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 )