#include <vlc/vlc.h>
#include <vlc/input.h>
#include "vlc_playlist.h"
+#include "playlist_internal.h"
#include <assert.h>
/*****************************************************************************
p_playlist->p_preparse->i_waiting,
p_item );
vlc_mutex_unlock( &p_playlist->p_preparse->object_lock );
+ vlc_cond_signal( &p_playlist->p_preparse->object_wait );
return VLC_SUCCESS;
}
return VLC_SUCCESS;
}
+int playlist_AskForArtEnqueue( playlist_t *p_playlist,
+ input_item_t *p_item )
+{
+ int i;
+ preparse_item_t p;
+ p.p_item = p_item;
+ p.b_fetch_art = VLC_TRUE;
+
+ vlc_mutex_lock( &p_playlist->p_secondary_preparse->object_lock );
+ for( i = 0; i < p_playlist->p_secondary_preparse->i_waiting &&
+ p_playlist->p_secondary_preparse->p_waiting->b_fetch_art == VLC_TRUE;
+ i++ );
+ vlc_gc_incref( p_item );
+ INSERT_ELEM( p_playlist->p_secondary_preparse->p_waiting,
+ p_playlist->p_secondary_preparse->i_waiting,
+ i, p );
+ vlc_mutex_unlock( &p_playlist->p_secondary_preparse->object_lock );
+ vlc_cond_signal( &p_playlist->p_secondary_preparse->object_lock );
+ return VLC_SUCCESS;
+}
+
void PreparseEnqueueItemSub( playlist_t *p_playlist,
playlist_item_t *p_item )
{
{
for( i = 0; i < p_item->i_children; i++)
{
- PreparseEnqueueItemSub( p_playlist,
- p_item->pp_children[i] );
+ PreparseEnqueueItemSub( p_playlist, p_item->pp_children[i] );
}
}
}
return NULL;
}
- if( !p_playlist->request.b_request && p_playlist->status.p_item &&
- p_playlist->status.p_item->i_flags & PLAYLIST_SKIP_FLAG )
+ if( !p_playlist->request.b_request && p_playlist->status.p_item )
{
- msg_Dbg( p_playlist, "blocking item, stopping") ;
- return NULL;
+ playlist_item_t *p_parent = p_playlist->status.p_item;
+ while( p_parent )
+ {
+ if( p_parent->i_flags & PLAYLIST_SKIP_FLAG )
+ {
+ msg_Dbg( p_playlist, "blocking item, stopping") ;
+ return NULL;
+ }
+ p_parent = p_parent->p_parent;
+ }
}
/* Random case. This is an exception: if request, but request is skip +- 1
p_playlist->pp_random[j] = p_tmp;
}
p_playlist->b_reset_random = VLC_FALSE;
+ PL_DEBUG( "random rebuilt, have %i items", p_playlist->i_random );
}
else
{
/* Start the real work */
if( p_playlist->request.b_request )
{
- PL_DEBUG( "processing request node %s item %s skip %i",
- PLI_NAME( p_playlist->request.p_item ),
- PLI_NAME( p_playlist->request.p_node ), i_skip );
p_new = p_playlist->request.p_item;
i_skip = p_playlist->request.i_skip;
+ PL_DEBUG( "processing request item %s node %s skip %i",
+ PLI_NAME( p_playlist->request.p_item ),
+ PLI_NAME( p_playlist->request.p_node ), i_skip );
if( p_playlist->request.p_node )
p_playlist->status.p_node = p_playlist->request.p_node;