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;
}
unsigned int playlist_size(struct playlist *playlist)
{
return playlist ? queue_size(&playlist->pl_queue) : 0;
}
void playlist_set_random(struct playlist *playlist, bool enabled)
{
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) {
file_writef(file, "%u", queue_size(&playlist->pl_queue));
file_writef(file, "%u", playlist_size(playlist));
queue_for_each(&playlist->pl_queue, &it)
file_writef(file, " %u", track_index(queue_iter_val(&it)));
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)
{
return queue_size(&playlist->pl_queue) > 0;
return playlist_size(playlist) > 0;
}
void playlist_generic_clear(struct playlist *playlist)
@ -137,7 +137,7 @@ void playlist_generic_clear(struct playlist *playlist)
if (!playlist)
return;
n = queue_size(&playlist->pl_queue);
n = playlist_size(playlist);
g_queue_clear(&playlist->pl_queue.q_tracks);
playlist->pl_queue.q_length = 0;
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)
{
unsigned int pos, size = playlist ? queue_size(&playlist->pl_queue) : 0;
unsigned int pos, size = playlist_size(playlist);
if (size == 0)
return NULL;
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;
queue_iter_set(&playlist->pl_queue,
&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;
while (queue_size(&playlist->pl_queue) > 0) {
while (playlist_size(playlist) > 0) {
track = queue_at(&playlist->pl_queue, 0);
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)
{
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,

View File

@ -148,7 +148,7 @@ static gint __gui_model_iter_n_children(GtkTreeModel *model, GtkTreeIter *iter)
{
if (iter != NULL || !cur_playlist)
return 0;
return queue_size(&cur_playlist->pl_queue);
return playlist_size(cur_playlist);
}
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;
if (parent || !cur_playlist || n >= queue_size(queue))
if (parent || !cur_playlist || n >= playlist_size(cur_playlist))
return FALSE;
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)
{
if (cur_playlist)
gui_model_remove(cur_playlist, NULL,
queue_size(&cur_playlist->pl_queue));
gui_model_remove(cur_playlist, NULL, playlist_size(cur_playlist));
cur_playlist = playlist;
__gui_model_set_runtime();
if (playlist && queue_size(&playlist->pl_queue) > 0)
if (playlist && playlist_size(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. */
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. */
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;
}
/* 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. */
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 *);
/* 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. */
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 i;
g_assert_cmpuint(playlist_size(&p), ==, 0);
playlist_generic_init(&p, NULL);
g_assert_cmpuint(playlist_size(&p), ==, 0);
for (i = 0; i < 13; i++) {
ex_length += track_get(i)->tr_length;
playlist_generic_add_front(&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(playlist_size(&p), ==, i + 1);
g_assert(cb_playlist == &p);
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(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_length, ==, ex_length);
g_assert_cmpuint(p.pl_queue.q_cur.it_pos, ==, (11 - i));
g_assert_cmpuint(playlist_size(&p), ==, (12 - i));
if (i < 12)
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(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_queue_get_length(&s.pl_queue.q_tracks), ==, 13);
g_assert_cmpuint(playlist_size(&s), ==, 13);
}
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 ex_length = 0;
unsigned int ex_size = N;
struct queue_iter it;
struct track *track;
unsigned int i;
@ -93,7 +92,6 @@ static void test_queue(gconstpointer arg)
g_assert_cmpuint(count_added, ==, i + 1);
}
g_assert_cmpuint(q.q_length, ==, ex_length);
g_assert_cmpuint(queue_size(&q), ==, ex_size);
/* queue_iter_init() */
if (N > 0) {
@ -110,7 +108,6 @@ static void test_queue(gconstpointer arg)
i++;
}
g_assert_cmpuint(i, ==, N);
g_assert_cmpuint(queue_size(&q), ==, ex_size);
queue_deinit(&q);
g_assert_null(q.q_sort);