playlist_item_t *p_item, *p_node;
vlc_value_t val;
+ if( !vlc_object_alive( p_playlist ) )
+ return VLC_EGENERIC;
+
if( playlist_IsEmpty( p_playlist ) )
return VLC_EGENERIC;
input_item_t *p_item )
{
vlc_object_lock( p_playlist->p_preparse );
+ if( !vlc_object_alive( p_playlist->p_preparse ) )
+ {
+ vlc_object_unlock( p_playlist->p_preparse );
+ return VLC_EGENERIC;
+ }
vlc_gc_incref( p_item );
INSERT_ELEM( p_playlist->p_preparse->pp_waiting,
p_playlist->p_preparse->i_waiting,
{
vlc_object_lock( p_playlist );
vlc_object_lock( p_playlist->p_preparse );
+ if( !vlc_object_alive( p_playlist->p_preparse ) )
+ {
+ vlc_object_unlock( p_playlist->p_preparse );
+ vlc_object_unlock( p_playlist );
+ return VLC_EGENERIC;
+ }
PreparseEnqueueItemSub( p_playlist, p_item );
vlc_object_unlock( p_playlist->p_preparse );
vlc_object_unlock( p_playlist );
int i;
vlc_object_lock( p_playlist->p_fetcher );
+ if( !vlc_object_alive( p_playlist->p_fetcher ) )
+ {
+ vlc_object_unlock( p_playlist->p_fetcher );
+ return VLC_EGENERIC;
+ }
+
for( i = 0; i < p_playlist->p_fetcher->i_waiting ; i++ );
vlc_gc_incref( p_item );
INSERT_ELEM( p_playlist->p_fetcher->pp_waiting,
PLI_NAME( p_playlist->request.p_item ),
PLI_NAME( p_playlist->request.p_node ), i_skip );
+ /* Make sure the node wasn't deleted */
+ if( p_playlist->status.p_node &&
+ p_playlist->status.p_node->i_flags & PLAYLIST_REMOVE_FLAG )
+ {
+ PL_DEBUG( "%s was marked for deletion, deleting",
+ PLI_NAME( p_playlist->status.p_node ) );
+ playlist_ItemDelete( p_playlist->status.p_node );
+ /* Don't attempt to reuse that node */
+ if( p_playlist->status.p_node == p_playlist->request.p_node )
+ p_playlist->request.p_node = NULL;
+ p_playlist->status.p_node = NULL;
+ }
+
if( p_playlist->request.p_node &&
p_playlist->request.p_node != p_playlist->status.p_node )
{
+
p_playlist->status.p_node = p_playlist->request.p_node;
p_playlist->b_reset_currently_playing = true;
}