X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fcontrol%2Fmedia_list_path.h;h=23cd534eee15e09baec44bfa64d5ba965843eb87;hb=e661a811fd18a0e2b7118fe61fe036a9eb3cb454;hp=00216dad432d8e822814ba7f43ecc44214d20830;hpb=e86b51d040e7a95d6f15cc17db8f24c6155568b3;p=vlc diff --git a/src/control/media_list_path.h b/src/control/media_list_path.h index 00216dad43..23cd534eee 100644 --- a/src/control/media_list_path.h +++ b/src/control/media_list_path.h @@ -25,6 +25,25 @@ #ifndef _LIBVLC_MEDIA_LIST_PATH_H #define _LIBVLC_MEDIA_LIST_PATH_H 1 +typedef int * libvlc_media_list_path_t; /* (Media List Player Internal) */ + +/************************************************************************** + * path_dump (Media List Player Internal) + **************************************************************************/ +static inline void libvlc_media_list_path_dump( const libvlc_media_list_path_t path ) +{ + if(!path) + { + printf("NULL path\n"); + return; + } + + int i; + for(i = 0; path[i] != -1; i++) + printf("%s%d", i > 0 ? "/" : "", path[i]); + printf("\n"); +} + /************************************************************************** * path_empty (Media List Player Internal) **************************************************************************/ @@ -49,7 +68,7 @@ static inline libvlc_media_list_path_t libvlc_media_list_path_with_root_index( i /************************************************************************** * path_depth (Media List Player Internal) **************************************************************************/ -static inline int libvlc_media_list_path_depth( libvlc_media_list_path_t path ) +static inline int libvlc_media_list_path_depth( const libvlc_media_list_path_t path ) { int i; for( i = 0; path[i] != -1; i++ ); @@ -70,12 +89,12 @@ static inline void libvlc_media_list_path_append( libvlc_media_list_path_t * p_p /************************************************************************** * path_copy_by_appending (Media List Player Internal) **************************************************************************/ -static inline libvlc_media_list_path_t libvlc_media_list_path_copy_by_appending( libvlc_media_list_path_t path, int index ) +static inline libvlc_media_list_path_t libvlc_media_list_path_copy_by_appending( const libvlc_media_list_path_t path, int index ) { libvlc_media_list_path_t ret; int old_depth = libvlc_media_list_path_depth( path ); - ret = malloc( sizeof(int)*(old_depth+2) ); - memcpy( ret, path, sizeof(int)*(old_depth+2) ); + ret = malloc( sizeof(int) * (old_depth + 2) ); + memcpy( ret, path, sizeof(int) * old_depth ); ret[old_depth] = index; ret[old_depth+1] = -1; return ret; @@ -84,7 +103,7 @@ static inline libvlc_media_list_path_t libvlc_media_list_path_copy_by_appending( /************************************************************************** * path_copy (Media List Player Internal) **************************************************************************/ -static inline libvlc_media_list_path_t libvlc_media_list_path_copy( libvlc_media_list_path_t path ) +static inline libvlc_media_list_path_t libvlc_media_list_path_copy( const libvlc_media_list_path_t path ) { libvlc_media_list_path_t ret; int depth = libvlc_media_list_path_depth( path ); @@ -97,7 +116,7 @@ static inline libvlc_media_list_path_t libvlc_media_list_path_copy( libvlc_media * get_path_rec (Media List Player Internal) **************************************************************************/ static libvlc_media_list_path_t -get_path_rec( libvlc_media_list_path_t path, libvlc_media_list_t * p_current_mlist, libvlc_media_t * p_searched_md ) +get_path_rec( const libvlc_media_list_path_t path, libvlc_media_list_t * p_current_mlist, libvlc_media_t * p_searched_md ) { int i, count; count = libvlc_media_list_count( p_current_mlist, NULL ); @@ -141,7 +160,7 @@ static inline libvlc_media_list_path_t libvlc_media_list_path_of_item( libvlc_me * item_at_path (Media List Player Internal) **************************************************************************/ static libvlc_media_t * -libvlc_media_list_item_at_path( libvlc_media_list_t * p_mlist, libvlc_media_list_path_t path ) +libvlc_media_list_item_at_path( libvlc_media_list_t * p_mlist, const libvlc_media_list_path_t path ) { libvlc_media_list_t * p_current_mlist = p_mlist; libvlc_media_t * p_md = NULL; @@ -174,7 +193,7 @@ libvlc_media_list_item_at_path( libvlc_media_list_t * p_mlist, libvlc_media_list * parentlist_at_path (Media List Player Internal) **************************************************************************/ static libvlc_media_list_t * -libvlc_media_list_parentlist_at_path( libvlc_media_list_t * p_mlist, libvlc_media_list_path_t path ) +libvlc_media_list_parentlist_at_path( libvlc_media_list_t * p_mlist, const libvlc_media_list_path_t path ) { libvlc_media_list_t * p_current_mlist = p_mlist; libvlc_media_t * p_md = NULL; @@ -185,7 +204,10 @@ libvlc_media_list_parentlist_at_path( libvlc_media_list_t * p_mlist, libvlc_medi libvlc_media_list_release( p_current_mlist ); if( path[i+1] == -1 ) + { + libvlc_media_list_retain(p_current_mlist); return p_current_mlist; + } p_md = libvlc_media_list_item_at_index( p_current_mlist, path[i], NULL ); @@ -207,7 +229,7 @@ libvlc_media_list_parentlist_at_path( libvlc_media_list_t * p_mlist, libvlc_medi * sublist_at_path (Media List Player Internal) **************************************************************************/ static libvlc_media_list_t * -libvlc_media_list_sublist_at_path( libvlc_media_list_t * p_mlist, libvlc_media_list_path_t path ) +libvlc_media_list_sublist_at_path( libvlc_media_list_t * p_mlist, const libvlc_media_list_path_t path ) { libvlc_media_list_t * ret; libvlc_media_t * p_md = libvlc_media_list_item_at_path( p_mlist, path );