Commit 0132bb5d authored by Jakob Leben's avatar Jakob Leben

Qt4: fix #3113: crash after a playlist item is removed by another plugin

parent efb6cbba
......@@ -653,9 +653,6 @@ void PLModel::processInputItemUpdate( input_item_t *p_item )
void PLModel::processItemRemoval( int i_id )
{
if( i_id <= 0 ) return;
if( i_id == i_cached_id ) i_cached_id = -1;
i_cached_input_id = -1;
removeItem( i_id );
}
......@@ -760,13 +757,22 @@ void PLModel::removeItem( PLItem *item )
{
if( !item ) return;
if( item->i_id == i_cached_id ) i_cached_id = -1;
i_cached_input_id = -1;
if( currentItem == item )
{
currentItem = NULL;
emit currentChanged( QModelIndex() );
}
if( item->parentItem ) item->parentItem->removeChild( item );
if( item->parentItem ) {
int i = item->parentItem->children.indexOf( item );
beginRemoveRows( index( item->parentItem, 0), i, i );
item->parentItem->children.removeAt(i);
delete item;
endRemoveRows();
}
else delete item;
if(item == rootItem)
......@@ -862,11 +868,9 @@ void PLModel::doDeleteItem( PLItem *item, QModelIndexList *fullList )
else
playlist_NodeDelete( p_playlist, p_item, true, false );
PL_UNLOCK;
/* And finally, remove it from the tree */
int itemIndex = item->parentItem->children.indexOf( item );
beginRemoveRows( index( item->parentItem, 0), itemIndex, itemIndex );
removeItem( item );
endRemoveRows();
}
/******* Volume III: Sorting and searching ********/
......
......@@ -151,12 +151,12 @@ private:
void recurseDelete( QList<PLItem*> children, QModelIndexList *fullList );
void doDeleteItem( PLItem *item, QModelIndexList *fullList );
void updateTreeItem( PLItem * );
void removeItem ( PLItem * );
void takeItem( PLItem * ); //will not delete item
void insertChildren( PLItem *node, QList<PLItem*>& items, int i_pos );
void dropAppendCopy( QByteArray& data, PLItem *target );
void dropMove( QByteArray& data, PLItem *target, int new_pos );
/* The following actions will not signal the view! */
void removeItem ( PLItem * );
void updateChildren( PLItem * );
void updateChildren( playlist_item_t *, PLItem * );
......
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