diff --git a/core/playlist.c b/core/playlist.c index f849e334..e7164c91 100644 --- a/core/playlist.c +++ b/core/playlist.c @@ -188,13 +188,6 @@ bool playlist_remove(struct playlist *playlist, struct track *track) return ret; } -bool playlist_has(struct playlist *playlist, struct track *track) -{ - if (!playlist || !track) - return false; - return queue_has(&playlist->pl_queue, track); -} - unsigned int playlist_size(struct playlist *playlist) { return playlist ? queue_size(&playlist->pl_queue) : 0; diff --git a/core/playlists/generic.c b/core/playlists/generic.c index 4db2446e..f225efb1 100644 --- a/core/playlists/generic.c +++ b/core/playlists/generic.c @@ -137,7 +137,7 @@ void playlist_generic_clear(struct playlist *playlist) bool playlist_generic_add_track(struct playlist *playlist, struct track *track) { - if (queue_has(&playlist->pl_queue, track)) + if (playlist_has(playlist, track)) return false; queue_add(&playlist->pl_queue, track); return true; @@ -146,7 +146,7 @@ bool playlist_generic_add_track(struct playlist *playlist, struct track *track) bool playlist_generic_add_track_front(struct playlist *playlist, struct track *track) { - if (queue_has(&playlist->pl_queue, track)) + if (playlist_has(playlist, track)) return false; queue_add_front(&playlist->pl_queue, track); return true; diff --git a/core/playlists/system.c b/core/playlists/system.c index 9fec512f..908235a0 100644 --- a/core/playlists/system.c +++ b/core/playlists/system.c @@ -48,7 +48,7 @@ static bool sys_pl_update_func(void *data) struct track *track = TRACK(dbe); if (sys_pl_update_check(playlist, track) && - !queue_has(&pl_system_get(SYS_PL_HIDDEN)->pl_queue, track)) + !playlist_has(pl_system_get(SYS_PL_HIDDEN), track)) playlist_generic_add_track_front(playlist, track); else playlist_generic_remove(playlist, track); diff --git a/core/queue.c b/core/queue.c index 3d5e9466..839a7373 100644 --- a/core/queue.c +++ b/core/queue.c @@ -125,14 +125,3 @@ void queue_clear(struct queue *queue) g_queue_clear(&queue->q_tracks); __queue_clear(queue, n); } - -bool queue_has(struct queue *queue, struct track *track) -{ - struct queue_iter it; - - queue_for_each(queue, &it) { - if (queue_iter_val(&it) == track) - return true; - } - return false; -} diff --git a/include/core/playlists/playlist.h b/include/core/playlists/playlist.h index 0b2dca13..49ca6af8 100644 --- a/include/core/playlists/playlist.h +++ b/include/core/playlists/playlist.h @@ -82,6 +82,13 @@ struct playlist_type { }; +/* Called to check if the playlist contains a specific track. */ +static inline bool playlist_has(struct playlist *playlist, struct track *track) +{ + return playlist ? g_queue_find(&playlist->pl_queue.q_tracks, track) != NULL : + false; +} + /* Called to clear the sort order of the playlist. */ static inline void playlist_clear_sort(struct playlist *playlist) { diff --git a/include/core/queue.h b/include/core/queue.h index d34bdd11..a6569942 100644 --- a/include/core/queue.h +++ b/include/core/queue.h @@ -116,7 +116,4 @@ unsigned int queue_add_front(struct queue *, struct track *); /* Called to remove all tracks from the queue. */ void queue_clear(struct queue *); -/* Called to check if a queue has a track. */ -bool queue_has(struct queue *, struct track *); - #endif /* OCARINA_CORE_QUEUE_H */ diff --git a/tests/core/playlist.c b/tests/core/playlist.c index 754f7298..ef7bacf4 100644 --- a/tests/core/playlist.c +++ b/tests/core/playlist.c @@ -75,6 +75,7 @@ static void test_playlist() for (i = 0; i < 13; i++) { playlist_generic_add_track_front(&p, track_get(i)); + g_assert_true(playlist_has(&p, track_get(i))); ex_length += track_get(i)->tr_length; } @@ -93,12 +94,14 @@ static void test_playlist() for (i = 0; i < 13; i++) { ex_length -= track_get(i)->tr_length; g_assert_true(playlist_remove(&p, track_get(i))); + g_assert_false(playlist_has(&p, track_get(i))); g_assert(cb_playlist == &p); g_assert(cb_track == track_get(i)); g_assert_cmpuint(p.pl_queue.q_length, ==, ex_length); g_assert_cmpuint(p.pl_queue.q_cur.it_pos, ==, (11 - i)); } g_assert_false(playlist_generic_remove(&p, NULL)); + g_assert_false(playlist_has(&p, track_get(i))); g_assert(cb_playlist == &p); g_assert(cb_track == track_get(12)); g_assert_cmpuint(p.pl_queue.q_length, ==, ex_length);