diff --git a/src/player/Thread.cxx b/src/player/Thread.cxx
index 656aa80e4..b6b107c3b 100644
--- a/src/player/Thread.cxx
+++ b/src/player/Thread.cxx
@@ -970,6 +970,15 @@ Player::Run() noexcept
 	pc.CommandFinished();
 
 	while (ProcessCommand()) {
+		if (decoder_starting) {
+			/* wait until the decoder is initialized completely */
+
+			if (!CheckDecoderStartup())
+				break;
+
+			continue;
+		}
+
 		if (buffering) {
 			/* buffering at the start of the song - wait
 			   until the buffer is large enough, to
@@ -987,15 +996,6 @@ Player::Run() noexcept
 			}
 		}
 
-		if (decoder_starting) {
-			/* wait until the decoder is initialized completely */
-
-			if (!CheckDecoderStartup())
-				break;
-
-			continue;
-		}
-
 		if (dc.IsIdle() && queued && dc.pipe == pipe) {
 			/* the decoder has finished the current song;
 			   make it decode the next song */