core/playlist: Implement playlist_size() directly

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2016-09-21 09:52:35 -04:00
parent 92bb742f8f
commit efbbc4ceff
10 changed files with 23 additions and 31 deletions

View File

@ -188,11 +188,6 @@ bool playlist_remove(struct playlist *playlist, struct track *track)
return ret; return ret;
} }
unsigned int playlist_size(struct playlist *playlist)
{
return playlist ? queue_size(&playlist->pl_queue) : 0;
}
void playlist_set_random(struct playlist *playlist, bool enabled) void playlist_set_random(struct playlist *playlist, bool enabled)
{ {
if (playlist && playlist->pl_ops->pl_set_random) { if (playlist && playlist->pl_ops->pl_set_random) {

View File

@ -73,7 +73,7 @@ void playlist_generic_save(struct playlist *playlist, struct file *file,
} }
if (flags & PL_SAVE_TRACKS) { if (flags & PL_SAVE_TRACKS) {
file_writef(file, "%u", queue_size(&playlist->pl_queue)); file_writef(file, "%u", playlist_size(playlist));
queue_for_each(&playlist->pl_queue, &it) queue_for_each(&playlist->pl_queue, &it)
file_writef(file, " %u", track_index(queue_iter_val(&it))); file_writef(file, " %u", track_index(queue_iter_val(&it)));
file_writef(file, "\n"); file_writef(file, "\n");
@ -127,7 +127,7 @@ void playlist_generic_load(struct playlist *playlist, struct file *file,
bool playlist_generic_can_select(struct playlist *playlist) bool playlist_generic_can_select(struct playlist *playlist)
{ {
return queue_size(&playlist->pl_queue) > 0; return playlist_size(playlist) > 0;
} }
void playlist_generic_clear(struct playlist *playlist) void playlist_generic_clear(struct playlist *playlist)
@ -137,7 +137,7 @@ void playlist_generic_clear(struct playlist *playlist)
if (!playlist) if (!playlist)
return; return;
n = queue_size(&playlist->pl_queue); n = playlist_size(playlist);
g_queue_clear(&playlist->pl_queue.q_tracks); g_queue_clear(&playlist->pl_queue.q_tracks);
playlist->pl_queue.q_length = 0; playlist->pl_queue.q_length = 0;
playlist->pl_queue.q_cur.it_iter = NULL; playlist->pl_queue.q_cur.it_iter = NULL;
@ -226,12 +226,12 @@ void playlist_generic_resort(struct playlist *playlist)
struct track *playlist_generic_next(struct playlist *playlist) struct track *playlist_generic_next(struct playlist *playlist)
{ {
unsigned int pos, size = playlist ? queue_size(&playlist->pl_queue) : 0; unsigned int pos, size = playlist_size(playlist);
if (size == 0) if (size == 0)
return NULL; return NULL;
else if (playlist->pl_random) { else if (playlist->pl_random) {
pos = g_random_int_range(1, queue_size(&playlist->pl_queue)); pos = g_random_int_range(1, size);
pos += playlist->pl_queue.q_cur.it_pos; pos += playlist->pl_queue.q_cur.it_pos;
queue_iter_set(&playlist->pl_queue, queue_iter_set(&playlist->pl_queue,
&playlist->pl_queue.q_cur, pos % size); &playlist->pl_queue.q_cur, pos % size);

View File

@ -116,7 +116,7 @@ static bool sys_pl_hidden_clear(struct playlist *playlist)
{ {
struct track *track; struct track *track;
while (queue_size(&playlist->pl_queue) > 0) { while (playlist_size(playlist) > 0) {
track = queue_at(&playlist->pl_queue, 0); track = queue_at(&playlist->pl_queue, 0);
sys_pl_hidden_remove(playlist, track); sys_pl_hidden_remove(playlist, track);
} }

View File

@ -55,7 +55,7 @@ static inline unsigned int __queue_add_tail(struct queue *queue,
struct track *track) struct track *track)
{ {
g_queue_push_tail(&queue->q_tracks, track); g_queue_push_tail(&queue->q_tracks, track);
return __queue_added(queue, track, queue_size(queue) - 1); return __queue_added(queue, track, g_queue_get_length(&queue->q_tracks) - 1);
} }
static inline unsigned int __queue_add_sorted(struct queue *queue, static inline unsigned int __queue_add_sorted(struct queue *queue,

View File

@ -148,7 +148,7 @@ static gint __gui_model_iter_n_children(GtkTreeModel *model, GtkTreeIter *iter)
{ {
if (iter != NULL || !cur_playlist) if (iter != NULL || !cur_playlist)
return 0; return 0;
return queue_size(&cur_playlist->pl_queue); return playlist_size(cur_playlist);
} }
static gboolean __gui_model_iter_nth_child(GtkTreeModel *model, static gboolean __gui_model_iter_nth_child(GtkTreeModel *model,
@ -158,7 +158,7 @@ static gboolean __gui_model_iter_nth_child(GtkTreeModel *model,
{ {
struct queue *queue = &cur_playlist->pl_queue; struct queue *queue = &cur_playlist->pl_queue;
if (parent || !cur_playlist || n >= queue_size(queue)) if (parent || !cur_playlist || n >= playlist_size(cur_playlist))
return FALSE; return FALSE;
iter->stamp = gui_model->gm_stamp; iter->stamp = gui_model->gm_stamp;
@ -322,13 +322,12 @@ void gui_model_update(struct playlist *playlist, struct track *track)
void gui_model_set_playlist(struct playlist *playlist) void gui_model_set_playlist(struct playlist *playlist)
{ {
if (cur_playlist) if (cur_playlist)
gui_model_remove(cur_playlist, NULL, gui_model_remove(cur_playlist, NULL, playlist_size(cur_playlist));
queue_size(&cur_playlist->pl_queue));
cur_playlist = playlist; cur_playlist = playlist;
__gui_model_set_runtime(); __gui_model_set_runtime();
if (playlist && queue_size(&playlist->pl_queue) > 0) if (playlist && playlist_size(playlist) > 0)
gui_model_add(playlist, 0); gui_model_add(playlist, 0);
} }

View File

@ -63,9 +63,6 @@ bool playlist_remove(struct playlist *, struct track *);
/* Called to check if a specific track is in the playlist. */ /* Called to check if a specific track is in the playlist. */
bool playlist_has(struct playlist *, struct track *); bool playlist_has(struct playlist *, struct track *);
/* Called to find the number of tracks in the playlist. */
unsigned int playlist_size(struct playlist *);
/* Called to set the playlist's random flag. */ /* Called to set the playlist's random flag. */
void playlist_set_random(struct playlist *, bool); void playlist_set_random(struct playlist *, bool);

View File

@ -89,6 +89,12 @@ static inline bool playlist_has(struct playlist *playlist, struct track *track)
false; false;
} }
/* Called to find the size of a playlist. */
static inline unsigned int playlist_size(struct playlist *playlist)
{
return playlist ? g_queue_get_length(&playlist->pl_queue.q_tracks) : 0;
}
/* Called to clear the sort order of the playlist. */ /* Called to clear the sort order of the playlist. */
static inline void playlist_clear_sort(struct playlist *playlist) static inline void playlist_clear_sort(struct playlist *playlist)
{ {

View File

@ -91,12 +91,6 @@ void queue_init(struct queue *, const struct queue_ops *, void *);
void queue_deinit(struct queue *); void queue_deinit(struct queue *);
/* Called to find the size of the queue. */
static inline unsigned int queue_size(struct queue *queue)
{
return g_queue_get_length(&queue->q_tracks);
}
/* Called to access the queued track at a given index. */ /* Called to access the queued track at a given index. */
static inline struct track *queue_at(struct queue *queue, unsigned int index) static inline struct track *queue_at(struct queue *queue, unsigned int index)
{ {

View File

@ -81,13 +81,16 @@ static void test_playlist()
unsigned int ex_length = 0; unsigned int ex_length = 0;
unsigned int i; unsigned int i;
g_assert_cmpuint(playlist_size(&p), ==, 0);
playlist_generic_init(&p, NULL); playlist_generic_init(&p, NULL);
g_assert_cmpuint(playlist_size(&p), ==, 0);
for (i = 0; i < 13; i++) { for (i = 0; i < 13; i++) {
ex_length += track_get(i)->tr_length; ex_length += track_get(i)->tr_length;
playlist_generic_add_front(&p, track_get(i)); playlist_generic_add_front(&p, track_get(i));
g_assert_true(playlist_has(&p, track_get(i))); g_assert_true(playlist_has(&p, track_get(i)));
g_assert_cmpuint(p.pl_queue.q_length, ==, ex_length); g_assert_cmpuint(p.pl_queue.q_length, ==, ex_length);
g_assert_cmpuint(playlist_size(&p), ==, i + 1);
g_assert(cb_playlist == &p); g_assert(cb_playlist == &p);
g_assert(cb_track == track_get(i)); g_assert(cb_track == track_get(i));
} }
@ -111,8 +114,9 @@ static void test_playlist()
g_assert_false(playlist_has(&p, track_get(i))); g_assert_false(playlist_has(&p, track_get(i)));
g_assert(cb_playlist == &p); g_assert(cb_playlist == &p);
g_assert(cb_track == track_get(i)); g_assert(cb_track == track_get(i));
g_assert_cmpuint(p.pl_queue.q_length, ==, ex_length); g_assert_cmpuint(p.pl_queue.q_length, ==, ex_length);
g_assert_cmpuint(p.pl_queue.q_cur.it_pos, ==, (11 - i)); g_assert_cmpuint(p.pl_queue.q_cur.it_pos, ==, (11 - i));
g_assert_cmpuint(playlist_size(&p), ==, (12 - i));
if (i < 12) if (i < 12)
g_assert_nonnull(p.pl_queue.q_cur.it_iter); g_assert_nonnull(p.pl_queue.q_cur.it_iter);
} }
@ -282,7 +286,7 @@ static void test_save_load()
g_assert_cmpuint(s.pl_queue.q_cur.it_pos, ==, 4); g_assert_cmpuint(s.pl_queue.q_cur.it_pos, ==, 4);
g_assert(queue_iter_val(&s.pl_queue.q_cur) == queue_at(&q.pl_queue, 4)); g_assert(queue_iter_val(&s.pl_queue.q_cur) == queue_at(&q.pl_queue, 4));
g_assert_cmpuint(g_slist_length(s.pl_queue.q_sort), ==, 0); g_assert_cmpuint(g_slist_length(s.pl_queue.q_sort), ==, 0);
g_assert_cmpuint(g_queue_get_length(&s.pl_queue.q_tracks), ==, 13); g_assert_cmpuint(playlist_size(&s), ==, 13);
} }
int main(int argc, char **argv) int main(int argc, char **argv)

View File

@ -75,7 +75,6 @@ static void test_queue(gconstpointer arg)
{ {
unsigned int N = GPOINTER_TO_UINT(arg); unsigned int N = GPOINTER_TO_UINT(arg);
unsigned int ex_length = 0; unsigned int ex_length = 0;
unsigned int ex_size = N;
struct queue_iter it; struct queue_iter it;
struct track *track; struct track *track;
unsigned int i; unsigned int i;
@ -93,7 +92,6 @@ static void test_queue(gconstpointer arg)
g_assert_cmpuint(count_added, ==, i + 1); g_assert_cmpuint(count_added, ==, i + 1);
} }
g_assert_cmpuint(q.q_length, ==, ex_length); g_assert_cmpuint(q.q_length, ==, ex_length);
g_assert_cmpuint(queue_size(&q), ==, ex_size);
/* queue_iter_init() */ /* queue_iter_init() */
if (N > 0) { if (N > 0) {
@ -110,7 +108,6 @@ static void test_queue(gconstpointer arg)
i++; i++;
} }
g_assert_cmpuint(i, ==, N); g_assert_cmpuint(i, ==, N);
g_assert_cmpuint(queue_size(&q), ==, ex_size);
queue_deinit(&q); queue_deinit(&q);
g_assert_null(q.q_sort); g_assert_null(q.q_sort);