diff options
| author | Louis Burda <quent.burda@gmail.com> | 2022-01-27 03:29:44 +0100 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2022-01-27 03:29:44 +0100 |
| commit | b073d4b0c2c1d4dce36adcc285ad5dfaf2f7599d (patch) | |
| tree | 253551dcba2f3798f9d6c4b6f8a9a820381eb31a /src/player.c | |
| parent | e456776063b61d339205c84bf884d0eeb761e57b (diff) | |
| download | tmus-b073d4b0c2c1d4dce36adcc285ad5dfaf2f7599d.tar.gz tmus-b073d4b0c2c1d4dce36adcc285ad5dfaf2f7599d.zip | |
New list interface for fast tail access
Diffstat (limited to 'src/player.c')
| -rw-r--r-- | src/player.c | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/src/player.c b/src/player.c index d8f7b22..2a2b8a9 100644 --- a/src/player.c +++ b/src/player.c @@ -61,10 +61,10 @@ player_init(void) player->conn = mpd_connection_new(NULL, 0, 0); ASSERT(player->conn != NULL); - player->queue = LIST_HEAD; - player->history = LIST_HEAD; + list_init(&player->queue); + list_init(&player->history); - player->playlist = LIST_HEAD; + list_init(&player->playlist); player->track = NULL; player->loaded = 0; @@ -118,11 +118,10 @@ player_play_next(struct track *prev) if (player->shuffle) { /* TODO better algorithm for random sequence */ index = rand() % list_len(&player->playlist); - iter = link_iter(player->playlist.next, index); + iter = list_at(&player->playlist, index); ASSERT(iter != NULL); } else if (player->loaded) { - iter = player->playlist.next; - for (; iter; iter = iter->next) { + for (LIST_ITER(&player->playlist, iter)) { track = UPCAST(iter, struct ref)->data; if (track == prev) break; @@ -130,7 +129,7 @@ player_play_next(struct track *prev) if (iter) iter = iter->next; } - if (!iter) iter = player->playlist.next; + if (!iter) iter = list_at(&player->playlist, 0); track = UPCAST(iter, struct ref)->data; player_play_track(track); @@ -251,12 +250,7 @@ player_update(void) void player_queue_clear(void) { - struct ref *ref; - - while (player->queue.next) { - ref = UPCAST(link_pop(player->queue.next), struct ref); - ref_free(ref); - } + refs_free(&player->queue); } void @@ -266,8 +260,7 @@ player_queue_append(struct track *track) struct link *link; ref = ref_init(track); - link = link_back(&player->queue); - link_append(link, LINK(ref)); + list_push_back(&player->queue, LINK(ref)); } void @@ -277,7 +270,7 @@ player_queue_insert(struct track *track, size_t pos) struct link *link; ref = ref_init(track); - link = link_iter(player->queue.next, pos); + link = list_at(&player->queue, pos); link_prepend(link, LINK(ref)); } |
