[vlc-devel] [PATCH] fixed sorting playlist by album for multiple discs.
Marcel Schnirring
ms at marcel-schnirring.de
Tue Mar 21 22:29:09 CET 2017
implicit title comparison when meta field is empty for both items had to be made explicit.
---
src/playlist/sort.c | 33 +++++++++++++++++----------------
1 file changed, 17 insertions(+), 16 deletions(-)
diff --git a/src/playlist/sort.c b/src/playlist/sort.c
index f241167..f3a3c69 100644
--- a/src/playlist/sort.c
+++ b/src/playlist/sort.c
@@ -90,9 +90,6 @@ static inline int meta_sort( const playlist_item_t *first,
i_ret = 1;
else if( psz_first && !psz_second )
i_ret = -1;
- /* No meta, sort by name */
- else if( !psz_first && !psz_second )
- i_ret = meta_strcasecmp_title( first, second );
else
{
if( b_integer )
@@ -216,12 +213,27 @@ int playlist_RecursiveNodeSort( playlist_t *p_playlist, playlist_item_t *p_node,
#define SORTFN( SORT, first, second ) static inline int proto_##SORT \
( const playlist_item_t *first, const playlist_item_t *second )
+SORTFN( SORT_TRACK_NUMBER, first, second )
+{
+ return meta_sort( first, second, vlc_meta_TrackNumber, true );
+}
+
+SORTFN( SORT_DISC_NUMBER, first, second )
+{
+ int i_ret = meta_sort( first, second, vlc_meta_DiscNumber, true );
+ /* Items came from the same disc: compare the track numbers */
+ if( i_ret == 0 )
+ i_ret = proto_SORT_TRACK_NUMBER( first, second );
+
+ return i_ret;
+}
+
SORTFN( SORT_ALBUM, first, second )
{
int i_ret = meta_sort( first, second, vlc_meta_Album, false );
- /* Items came from the same album: compare the track numbers */
+ /* Items came from the same album: compare the disc numbers */
if( i_ret == 0 )
- i_ret = meta_sort( first, second, vlc_meta_TrackNumber, true );
+ i_ret = proto_SORT_DISC_NUMBER( first, second );
return i_ret;
}
@@ -313,16 +325,6 @@ SORTFN( SORT_TITLE_NUMERIC, first, second )
return i_ret;
}
-SORTFN( SORT_TRACK_NUMBER, first, second )
-{
- return meta_sort( first, second, vlc_meta_TrackNumber, true );
-}
-
-SORTFN( SORT_DISC_NUMBER, first, second )
-{
- return meta_sort( first, second, vlc_meta_DiscNumber, true );
-}
-
SORTFN( SORT_URI, first, second )
{
int i_ret;
@@ -371,4 +373,3 @@ static const sortfn_t sorting_fns[NUM_SORT_FNS][2] =
#define DEF( a ) { cmp_a_##a, cmp_d_##a },
{ VLC_DEFINE_SORT_FUNCTIONS };
#undef DEF
-
--
2.7.4
More information about the vlc-devel
mailing list