From c5a0a3470ea11e204450a277d31b8fe0efec3f72 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Mon, 9 May 2016 08:18:40 -0400 Subject: [PATCH] core/playlists/library: Add pl_library_get_queue() function Called to access the track queue associated with the given playlist. Signed-off-by: Anna Schumaker --- core/playlists/library.c | 15 ++++++++++++++- tests/core/playlists/library.c | 4 ++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/core/playlists/library.c b/core/playlists/library.c index 969a118d..10ddbdf0 100644 --- a/core/playlists/library.c +++ b/core/playlists/library.c @@ -43,7 +43,20 @@ static bool __lib_pl_load(void *data) } -struct playlist_type pl_library; +static struct queue *pl_library_get_queue(const gchar *name) +{ + struct library *library = library_lookup(name); + struct playlist *playlist = NULL; + + if (library) + playlist = (struct playlist *)library->li_playlist; + return playlist ? &playlist->pl_queue : NULL; +} + + +struct playlist_type pl_library = { + .pl_get_queue = pl_library_get_queue, +}; static bool __lib_pl_init(void *data) diff --git a/tests/core/playlists/library.c b/tests/core/playlists/library.c index 026258ff..b3b2df15 100644 --- a/tests/core/playlists/library.c +++ b/tests/core/playlists/library.c @@ -22,13 +22,17 @@ void test_library() track_add(library, "tests/Music/Hyrule Symphony/01 - Title Theme.ogg"); track_add(library, "tests/Music/Hyrule Symphony/02 - Kokiri Forest.ogg"); test_equal(library->li_playlist, NULL); + test_equal((void *)pl_library.pl_get_queue("tests/Music"), NULL); pl_library_init(NULL); while (idle_run_task()) {}; playlist = (struct playlist *)library->li_playlist; test_not_equal(library->li_playlist, NULL); + test_not_equal((void *)pl_library.pl_get_queue("tests/Music"), NULL); test_equal(queue_size(&playlist->pl_queue), 2); + test_equal((void *)pl_library.pl_get_queue("tests/Music"), + (void *)&playlist->pl_queue); pl_library_deinit(); test_equal(library->li_playlist, NULL);