diff options
| author | Louis Burda <quent.burda@gmail.com> | 2021-12-18 13:11:07 +0100 |
|---|---|---|
| committer | Louis Burda <quent.burda@gmail.com> | 2021-12-20 15:32:29 +0100 |
| commit | 4b0b3da65906ae892fa3f46a3482dd36b32c816c (patch) | |
| tree | 26d4b8240cc894e1e9a1432605c27c65cbbf2e0d /player.c | |
| parent | 69e7a9341e811bf658f8d75bb43f6613d298c87d (diff) | |
| download | tmus-4b0b3da65906ae892fa3f46a3482dd36b32c816c.tar.gz tmus-4b0b3da65906ae892fa3f46a3482dd36b32c816c.zip | |
Add player queuing
Diffstat (limited to 'player.c')
| -rw-r--r-- | player.c | 22 |
1 files changed, 18 insertions, 4 deletions
@@ -62,6 +62,7 @@ player_update(void) { struct mpd_status *status; struct mpd_song *song; + struct ref *track; const char *tmp; status = mpd_run_status(player->conn); @@ -86,7 +87,15 @@ player_update(void) player->seek_delay -= 1; if (!player->seek_delay) player_play(); - } + } + + if (!mpd_run_current_song(player->conn) + && !list_empty(&player->queue)) { + track = UPCAST(link_pop(player->queue.next), + struct ref); + player_play_track(track->data); + ref_free(track); + } song = mpd_run_current_song(player->conn); if (song) { @@ -118,7 +127,12 @@ player_queue_clear(void) void player_queue_append(struct track *track) { - player_queue_insert(track, list_len(&player->queue)); + struct ref *ref; + struct link *link; + + ref = ref_init(track); + link = link_back(&player->queue); + link_append(link, LINK(ref)); } void @@ -128,8 +142,8 @@ player_queue_insert(struct track *track, size_t pos) struct link *link; ref = ref_init(track); - link = link_iter(&player->queue, pos); - link_append(link, &ref->link); + link = link_iter(player->queue.next, pos); + link_prepend(link, LINK(ref)); } int |
