diff --git a/src/player/Thread.cxx b/src/player/Thread.cxx
index e68c2e412..7ccb6e4c9 100644
--- a/src/player/Thread.cxx
+++ b/src/player/Thread.cxx
@@ -1027,7 +1027,9 @@ Player::Run() noexcept
 			/* wake up the decoder (just in case it's
 			   waiting for space in the MusicBuffer) and
 			   wait for it */
+			// TODO: eliminate this kludge
 			dc.Signal();
+
 			dc.WaitForDecoder();
 		} else if (IsDecoderAtNextSong()) {
 			/* at the beginning of a new song */
@@ -1049,6 +1051,12 @@ Player::Run() noexcept
 			   new PCM data in time: wait for the
 			   decoder */
 
+			/* wake up the decoder (just in case it's
+			   waiting for space in the MusicBuffer) and
+			   wait for it */
+			// TODO: eliminate this kludge
+			dc.Signal();
+
 			dc.WaitForDecoder();
 		}
 	}