X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Finput%2Fitem.c;h=df4e15967ef345a891f4ca769b4f7ee43a8e4a30;hb=5d3e4a5dbade823289376566ba1ea5f09cb222d7;hp=9872e99ba6afe96d48794764aa1edb172706664b;hpb=2acf64c7bfceffd8f5f288b97f54d4a0ef348dec;p=vlc diff --git a/src/input/item.c b/src/input/item.c index 9872e99ba6..df4e15967e 100644 --- a/src/input/item.c +++ b/src/input/item.c @@ -216,7 +216,7 @@ void input_item_SetMeta( input_item_t *p_i, vlc_meta_type_t meta_type, const cha } /* FIXME GRRRRRRRRRR args should be in the reverse order to be - * consistant with (nearly?) all or copy funcs */ + * consistent with (nearly?) all or copy funcs */ void input_item_CopyOptions( input_item_t *p_parent, input_item_t *p_child ) { @@ -254,10 +254,6 @@ static void post_subitems( input_item_node_t *p_node ) * the input item children. */ void input_item_PostSubItem( input_item_t *p_parent, input_item_t *p_child ) { - vlc_mutex_lock( &p_parent->lock ); - p_parent->i_type = ITEM_TYPE_PLAYLIST; - vlc_mutex_unlock( &p_parent->lock ); - input_item_node_t *p_node = input_item_node_Create( p_parent ); input_item_node_AppendItem( p_node, p_child ); input_item_node_PostAndDelete( p_node ); @@ -361,8 +357,10 @@ char *input_item_GetURI( input_item_t *p_i ) vlc_mutex_unlock( &p_i->lock ); return psz_s; } + void input_item_SetURI( input_item_t *p_i, const char *psz_uri ) { + assert( psz_uri ); #ifndef NDEBUG if( !strstr( psz_uri, "://" ) || strchr( psz_uri, ' ' ) || strchr( psz_uri, '"' ) ) @@ -860,7 +858,6 @@ input_item_t *input_item_NewWithType( vlc_object_t *p_obj, const char *psz_uri, p_input->b_fixed_name = false; p_input->i_type = i_type; - p_input->b_prefers_tree = false; if( psz_uri ) input_item_SetURI( p_input, psz_uri ); @@ -878,6 +875,31 @@ input_item_t *input_item_NewWithType( vlc_object_t *p_obj, const char *psz_uri, return p_input; } +input_item_t *input_item_Copy( vlc_object_t *p_obj, input_item_t *p_input ) +{ + vlc_mutex_lock( &p_input->lock ); + + input_item_t *p_new_input = + input_item_NewWithType( p_obj, + p_input->psz_uri, p_input->psz_name, + 0, NULL, 0, p_input->i_duration, + p_input->i_type ); + + if( p_new_input ) + { + for( int i = 0 ; i< p_input->i_options; i++ ) + { + input_item_AddOption( p_new_input, + p_input->ppsz_options[i], + p_input->optflagv[i] ); + } + } + + vlc_mutex_unlock( &p_input->lock ); + + return p_new_input; +} + struct item_type_entry { const char psz_scheme[7];