Commit cff72764 authored by Max Kellermann's avatar Max Kellermann

playlist: move checks out of playlist_sync_with_queue()

Rename the function to playlist_song_started(), which gets only called if the song has actually started.
parent 7f803494
...@@ -93,33 +93,33 @@ playlist_queue_song_order(struct playlist *playlist, unsigned order) ...@@ -93,33 +93,33 @@ playlist_queue_song_order(struct playlist *playlist, unsigned order)
} }
/** /**
* Check if the player thread has already started playing the "queued" * Called if the player thread has started playing the "queued" song.
* song.
*/ */
static void static void
playlist_sync_with_queue(struct playlist *playlist) playlist_song_started(struct playlist *playlist)
{ {
if (pc.next_song == NULL && playlist->queued != -1) { assert(pc.next_song == NULL);
/* queued song has started: copy queued to current, assert(playlist->queued >= -1);
and notify the clients */
int current = playlist->current; /* queued song has started: copy queued to current,
playlist->current = playlist->queued; and notify the clients */
playlist->queued = -1;
/* Set pause and remove the single mode. */
if(playlist->queue.single && !playlist->queue.repeat) {
playlist->queue.single = false;
idle_add(IDLE_OPTIONS);
pc_set_pause(true); int current = playlist->current;
} playlist->current = playlist->queued;
playlist->queued = -1;
if(playlist->queue.consume) /* Set pause and remove the single mode. */
playlist_delete(playlist, queue_order_to_position(&playlist->queue, current)); if(playlist->queue.single && !playlist->queue.repeat) {
playlist->queue.single = false;
idle_add(IDLE_OPTIONS);
idle_add(IDLE_PLAYER); pc_set_pause(true);
} }
if(playlist->queue.consume)
playlist_delete(playlist, queue_order_to_position(&playlist->queue, current));
idle_add(IDLE_PLAYER);
} }
const struct song * const struct song *
...@@ -228,7 +228,8 @@ playlist_sync(struct playlist *playlist) ...@@ -228,7 +228,8 @@ playlist_sync(struct playlist *playlist)
else { else {
/* check if the player thread has already started /* check if the player thread has already started
playing the queued song */ playing the queued song */
playlist_sync_with_queue(playlist); if (pc.next_song == NULL && playlist->queued != -1)
playlist_song_started(playlist);
/* make sure the queued song is always set (if /* make sure the queued song is always set (if
possible) */ possible) */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment