Commit 29ab3b29 authored by Rémi Duraffort's avatar Rémi Duraffort

Fix a bug when sorting the playlist:

Actually sort is well done but when the user ask for the next/previous item in
the playlist, it will get the one without the sort and not the right
previous/next item.

This is caused by the fact that the table which describe previous/next isn't
rebuilded after a call to the sort function. This commit force the rebuild to
be done (b_reset_currently_playing = true)
parent 7d357446
...@@ -54,32 +54,54 @@ static int playlist_NodeSort( playlist_t * p_playlist , playlist_item_t *p_node, ...@@ -54,32 +54,54 @@ static int playlist_NodeSort( playlist_t * p_playlist , playlist_item_t *p_node,
} }
/** /**
* Sort a node recursively. * Sort a node recursively
*
* This function must be entered with the playlist lock !
*
* \param p_playlist the playlist * \param p_playlist the playlist
* \param p_node the node to sort * \param p_node the node to sort
* \param i_mode: SORT_ID, SORT_TITLE, SORT_ARTIST, SORT_ALBUM, SORT_RANDOM * \param i_mode: SORT_ID, SORT_TITLE, SORT_ARTIST, SORT_ALBUM, SORT_RANDOM
* \param i_type: ORDER_NORMAL or ORDER_REVERSE (reversed order) * \param i_type: ORDER_NORMAL or ORDER_REVERSE (reversed order)
* \return VLC_SUCCESS on success * \return VLC_SUCCESS on success
*/ */
int playlist_RecursiveNodeSort( playlist_t *p_playlist, playlist_item_t *p_node, static int recursiveNodeSort( playlist_t *p_playlist, playlist_item_t *p_node,
int i_mode, int i_type ) int i_mode, int i_type )
{ {
int i; int i;
/* Sort the current node */
playlist_NodeSort( p_playlist, p_node, i_mode, i_type ); playlist_NodeSort( p_playlist, p_node, i_mode, i_type );
/* And all the children */
for( i = 0 ; i< p_node->i_children; i++ ) for( i = 0 ; i< p_node->i_children; i++ )
{ {
if( p_node->pp_children[i]->i_children != -1 ) if( p_node->pp_children[i]->i_children != -1 )
{ {
playlist_RecursiveNodeSort( p_playlist, p_node->pp_children[i], recursiveNodeSort( p_playlist, p_node->pp_children[i],
i_mode,i_type ); i_mode, i_type );
} }
} }
return VLC_SUCCESS; return VLC_SUCCESS;
} }
/**
* Sort a node recursively.
*
* This function must be entered with the playlist lock !
*
* \param p_playlist the playlist
* \param p_node the node to sort
* \param i_mode: SORT_ID, SORT_TITLE, SORT_ARTIST, SORT_ALBUM, SORT_RANDOM
* \param i_type: ORDER_NORMAL or ORDER_REVERSE (reversed order)
* \return VLC_SUCCESS on success
*/
int playlist_RecursiveNodeSort( playlist_t *p_playlist, playlist_item_t *p_node,
int i_mode, int i_type )
{
/* Ask the playlist to reset as we are changing the order */
pl_priv(p_playlist)->b_reset_currently_playing = true;
/* Do the real job recursively */
return recursiveNodeSort( p_playlist, p_node, i_mode, i_type );
}
static int sort_mode = 0; static int sort_mode = 0;
static int sort_type = 0; static int sort_type = 0;
......
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