From cff727644d7cc9f2e5c8767896706f1e8d41a767 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Sat, 19 Jun 2010 13:33:32 +0200
Subject: 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.
---
 src/playlist.c | 41 +++++++++++++++++++++--------------------
 1 file changed, 21 insertions(+), 20 deletions(-)

(limited to 'src')

diff --git a/src/playlist.c b/src/playlist.c
index 40990bff5..99feb28da 100644
--- a/src/playlist.c
+++ b/src/playlist.c
@@ -93,33 +93,33 @@ playlist_queue_song_order(struct playlist *playlist, unsigned order)
 }
 
 /**
- * Check if the player thread has already started playing the "queued"
- * song.
+ * Called if the player thread has started playing the "queued" song.
  */
 static void
-playlist_sync_with_queue(struct playlist *playlist)
+playlist_song_started(struct playlist *playlist)
 {
-	if (pc.next_song == NULL && playlist->queued != -1) {
-		/* queued song has started: copy queued to current,
-		   and notify the clients */
+	assert(pc.next_song == NULL);
+	assert(playlist->queued >= -1);
 
-		int current = playlist->current;
-		playlist->current = playlist->queued;
-		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);
+	/* queued song has started: copy queued to current,
+	   and notify the clients */
 
-			pc_set_pause(true);
-		}
+	int current = playlist->current;
+	playlist->current = playlist->queued;
+	playlist->queued = -1;
 
-		if(playlist->queue.consume)
-			playlist_delete(playlist, queue_order_to_position(&playlist->queue, current));
+	/* Set pause and remove the single mode. */
+	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 *
@@ -228,7 +228,8 @@ playlist_sync(struct playlist *playlist)
 	else {
 		/* check if the player thread has already started
 		   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
 		   possible) */
-- 
cgit v1.2.3