Commit 56c70401 authored by Jakob Leben's avatar Jakob Leben

merge playlist_DeleteItem() functionality into playlist_NodeDelete()

...omitting b_stop argument, because it is true in all use cases.
parent 72be2e48
...@@ -744,6 +744,9 @@ static void ChangeToNode( playlist_t *p_playlist, playlist_item_t *p_item ) ...@@ -744,6 +744,9 @@ static void ChangeToNode( playlist_t *p_playlist, playlist_item_t *p_item )
int playlist_DeleteItem( playlist_t * p_playlist, playlist_item_t *p_item, int playlist_DeleteItem( playlist_t * p_playlist, playlist_item_t *p_item,
bool b_stop ) bool b_stop )
{ {
assert( b_stop );
return playlist_NodeDelete( p_playlist, p_item, true, false );
#if 0
int i; int i;
int i_id = p_item->i_id; int i_id = p_item->i_id;
PL_ASSERT_LOCKED; PL_ASSERT_LOCKED;
...@@ -790,6 +793,7 @@ int playlist_DeleteItem( playlist_t * p_playlist, playlist_item_t *p_item, ...@@ -790,6 +793,7 @@ int playlist_DeleteItem( playlist_t * p_playlist, playlist_item_t *p_item,
playlist_ItemRelease( p_item ); playlist_ItemRelease( p_item );
return VLC_SUCCESS; return VLC_SUCCESS;
#endif
} }
static int RecursiveAddIntoParent ( static int RecursiveAddIntoParent (
......
...@@ -143,22 +143,13 @@ int playlist_NodeDelete( playlist_t *p_playlist, playlist_item_t *p_root, ...@@ -143,22 +143,13 @@ int playlist_NodeDelete( playlist_t *p_playlist, playlist_item_t *p_root,
PL_ASSERT_LOCKED; PL_ASSERT_LOCKED;
int i; int i;
if( p_root->i_children == -1 )
{
return VLC_EGENERIC;
}
/* Delete the children */ /* Delete the children */
for( i = p_root->i_children - 1 ; i >= 0; i-- ) for( i = p_root->i_children - 1 ; i >= 0; i-- )
{ {
if( p_root->pp_children[i]->i_children > -1 ) if( b_delete_items || p_root->pp_children[i]->i_children > -1 )
{ {
playlist_NodeDelete( p_playlist, p_root->pp_children[i], playlist_NodeDelete( p_playlist, p_root->pp_children[i],
b_delete_items , b_force ); b_delete_items, b_force );
}
else if( b_delete_items )
{
playlist_DeleteItem( p_playlist, p_root->pp_children[i], true );
} }
} }
/* Delete the node */ /* Delete the node */
...@@ -167,6 +158,8 @@ int playlist_NodeDelete( playlist_t *p_playlist, playlist_item_t *p_root, ...@@ -167,6 +158,8 @@ int playlist_NodeDelete( playlist_t *p_playlist, playlist_item_t *p_root,
} }
else else
{ {
pl_priv(p_playlist)->b_reset_currently_playing = true;
int i; int i;
var_SetInteger( p_playlist, "playlist-item-deleted", p_root->i_id ); var_SetInteger( p_playlist, "playlist-item-deleted", p_root->i_id );
ARRAY_BSEARCH( p_playlist->all_items, ->i_id, int, ARRAY_BSEARCH( p_playlist->all_items, ->i_id, int,
...@@ -174,6 +167,28 @@ int playlist_NodeDelete( playlist_t *p_playlist, playlist_item_t *p_root, ...@@ -174,6 +167,28 @@ int playlist_NodeDelete( playlist_t *p_playlist, playlist_item_t *p_root,
if( i != -1 ) if( i != -1 )
ARRAY_REMOVE( p_playlist->all_items, i ); ARRAY_REMOVE( p_playlist->all_items, i );
if( p_root->i_children == -1 ) {
ARRAY_BSEARCH( p_playlist->items,->i_id, int, p_root->i_id, i );
if( i != -1 )
ARRAY_REMOVE( p_playlist->items, i );
}
/* Check if it is the current item */
if( get_current_status_item( p_playlist ) == p_root )
{
/* Stop */
playlist_Control( p_playlist, PLAYLIST_STOP, pl_Locked );
msg_Info( p_playlist, "stopping playback" );
/* This item can't be the next one to be played ! */
set_current_status_item( p_playlist, NULL );
}
ARRAY_BSEARCH( p_playlist->current,->i_id, int, p_root->i_id, i );
if( i != -1 )
ARRAY_REMOVE( p_playlist->current, i );
PL_DEBUG( "deleting item `%s'", p_root->p_input->psz_name );
/* Remove the item from its parent */ /* Remove the item from its parent */
if( p_root->p_parent ) if( p_root->p_parent )
playlist_NodeRemoveItem( p_playlist, p_root, p_root->p_parent ); playlist_NodeRemoveItem( p_playlist, p_root, p_root->p_parent );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment