[vlc-devel] commit: Cosmetics, and pull finding the playlist sorting function back to top level. The meta_* functions are still wildly inefficient, though. (JP Dinger )
git version control
git at videolan.org
Sat May 30 12:25:53 CEST 2009
vlc | branch: master | JP Dinger <jpd at videolan.org> | Sat May 30 01:52:49 2009 +0200| [f5078293e01a99643c8666f63f2204350f7c38f8] | committer: JP Dinger
Cosmetics, and pull finding the playlist sorting function back to top level. The meta_* functions are still wildly inefficient, though.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f5078293e01a99643c8666f63f2204350f7c38f8
---
src/playlist/sort.c | 28 +++++++++++-----------------
1 files changed, 11 insertions(+), 17 deletions(-)
diff --git a/src/playlist/sort.c b/src/playlist/sort.c
index ad1e861..67366d6 100644
--- a/src/playlist/sort.c
+++ b/src/playlist/sort.c
@@ -127,19 +127,16 @@ static inline sortfn_t find_sorting_fn( unsigned i_mode, unsigned i_type )
* Sort an array of items recursively
* @param i_items: number of items
* @param pp_items: the array of items
- * @param i_mode: a SORT_* enum indicating the field to sort on
- * @param i_type: ORDER_NORMAL or ORDER_REVERSE
+ * @param p_sortfn: the sorting function
* @return nothing
*/
static inline
void playlist_ItemArraySort( unsigned i_items, playlist_item_t **pp_items,
- unsigned i_mode, unsigned i_type )
+ sortfn_t p_sortfn )
{
- sortfn_t sortfn = find_sorting_fn(i_mode, i_type);
-
- if( sortfn )
+ if( p_sortfn )
{
- qsort( pp_items, i_items, sizeof( pp_items[0] ), sortfn );
+ qsort( pp_items, i_items, sizeof( pp_items[0] ), p_sortfn );
}
else /* Randomise */
{
@@ -167,22 +164,19 @@ void playlist_ItemArraySort( unsigned i_items, playlist_item_t **pp_items,
* 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)
+ * @param p_sortfn the sorting function
* @return VLC_SUCCESS on success
*/
static int recursiveNodeSort( playlist_t *p_playlist, playlist_item_t *p_node,
- int i_mode, int i_type )
+ sortfn_t p_sortfn )
{
int i;
- playlist_ItemArraySort( p_node->i_children, p_node->pp_children,
- i_mode, i_type );
+ playlist_ItemArraySort(p_node->i_children,p_node->pp_children,p_sortfn);
for( i = 0 ; i< p_node->i_children; i++ )
{
if( p_node->pp_children[i]->i_children != -1 )
{
- recursiveNodeSort( p_playlist, p_node->pp_children[i],
- i_mode, i_type );
+ recursiveNodeSort( p_playlist, p_node->pp_children[i], p_sortfn );
}
}
return VLC_SUCCESS;
@@ -195,7 +189,7 @@ static int recursiveNodeSort( playlist_t *p_playlist, playlist_item_t *p_node,
*
* \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_mode: a SORT_* constant indicating the field to sort on
* \param i_type: ORDER_NORMAL or ORDER_REVERSE (reversed order)
* \return VLC_SUCCESS on success
*/
@@ -206,7 +200,7 @@ int playlist_RecursiveNodeSort( playlist_t *p_playlist, playlist_item_t *p_node,
pl_priv(p_playlist)->b_reset_currently_playing = true;
/* Do the real job recursively */
- return recursiveNodeSort( p_playlist, p_node, i_mode, i_type );
+ return recursiveNodeSort(p_playlist,p_node,find_sorting_fn(i_mode,i_type));
}
@@ -214,7 +208,7 @@ int playlist_RecursiveNodeSort( playlist_t *p_playlist, playlist_item_t *p_node,
* functions are wrapped in cmp_a_## and cmp_d_## functions that do
* void * to const playlist_item_t * casting and dereferencing and
* cmp_d_## inverts the result, too. proto_## are static inline,
- * cmp_[ad]_## are merely inline as they're the target of pointers.
+ * cmp_[ad]_## are merely static as they're the target of pointers.
*
* In any case, each SORT_## constant (except SORT_RANDOM) must have
* a matching SORTFN( )-declared function here.
More information about the vlc-devel
mailing list