core/playlists: Accept an argument list for playlists initial sort order

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2018-04-17 08:02:59 -04:00
parent a4cdac7f22
commit 7df129d533
4 changed files with 23 additions and 13 deletions

View File

@ -50,15 +50,21 @@ void playlist_generic_init(struct playlist *playlist)
}
}
void playlist_generic_init_sorted(struct playlist *playlist)
void playlist_generic_init_sorted(struct playlist *playlist,
unsigned int nargs, ...)
{
if (playlist) {
playlist_generic_init(playlist);
playlist_generic_sort(playlist, COMPARE_ARTIST);
playlist_generic_sort(playlist, COMPARE_YEAR);
playlist_generic_sort(playlist, COMPARE_ALBUM);
playlist_generic_sort(playlist, COMPARE_TRACK);
}
unsigned int i;
va_list argp;
if (!playlist)
return;
playlist_generic_init(playlist);
va_start(argp, nargs);
for (i = 0; i < nargs; i++)
playlist_generic_sort(playlist, va_arg(argp, unsigned int));
va_end(argp);
}
void playlist_generic_deinit(struct playlist *playlist)
@ -82,7 +88,8 @@ struct playlist *playlist_generic_alloc(gchar *name, enum playlist_type_t type,
playlist->pl_id = id;
playlist->pl_ops = ops;
playlist_generic_init_sorted(playlist);
playlist_generic_init_sorted(playlist, 4, COMPARE_ARTIST, COMPARE_YEAR,
COMPARE_ALBUM, COMPARE_TRACK);
if (callbacks)
callbacks->pl_cb_alloc(playlist);
return playlist;

View File

@ -423,7 +423,9 @@ void pl_system_init(void)
sys_pl_update(playlist);
case SYS_PL_FAVORITES:
case SYS_PL_HIDDEN:
playlist_generic_init_sorted(playlist);
playlist_generic_init_sorted(playlist, 4,
COMPARE_ARTIST, COMPARE_YEAR,
COMPARE_ALBUM, COMPARE_TRACK);
break;
}
}

View File

@ -41,7 +41,7 @@ void playlist_generic_set_callbacks(struct playlist_callbacks *);
/* Generic playlist init functions. */
void playlist_generic_init(struct playlist *);
void playlist_generic_init_sorted(struct playlist *);
void playlist_generic_init_sorted(struct playlist *, unsigned int, ...);
/* Generic playlist deinit function. */
void playlist_generic_deinit(struct playlist *);

View File

@ -50,7 +50,7 @@ static void test_null()
playlist_generic_free(NULL);
playlist_generic_init(NULL);
playlist_generic_init_sorted(NULL);
playlist_generic_init_sorted(NULL, 0);
playlist_generic_deinit(NULL);
g_assert_null(playlist_lookup(PL_MAX_TYPE, "NULL"));
@ -202,7 +202,8 @@ static void test_sorting()
struct track *track;
unsigned int i;
playlist_generic_init_sorted(&p);
playlist_generic_init_sorted(&p, 4, COMPARE_ARTIST, COMPARE_YEAR,
COMPARE_ALBUM, COMPARE_TRACK);
g_assert_cmpuint(g_slist_length(p.pl_sort), ==, 4);
playlist_clear_sort(&p);
g_assert_cmpuint(g_slist_length(p.pl_sort), ==, 0);