aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-01-04 14:55:02 +0100
committerMax Kellermann <max@duempel.org>2009-01-04 14:55:02 +0100
commit55b6fd2f0c9b49f980d669e49dc6e04cbf4a769a (patch)
tree7d9e1d48fc113eeaab1d4eda3092ac83db78a3aa
parent96c18e7d159d5b4f38642982ed0b370f15b385e1 (diff)
downloadmpd-55b6fd2f0c9b49f980d669e49dc6e04cbf4a769a.tar.gz
mpd-55b6fd2f0c9b49f980d669e49dc6e04cbf4a769a.tar.xz
mpd-55b6fd2f0c9b49f980d669e49dc6e04cbf4a769a.zip
player_thread: fix cross-fading duplicate chunk bug
When the decoder of the new song is not fast enough, the player thread has to wait for it for a moment. However the variable "nextChunk" was reset to -1 during that, making the next loop iteration assume that cross-fading has not begun yet. This patch overwrites it with "0" while waiting.
-rw-r--r--NEWS1
-rw-r--r--src/player_thread.c8
2 files changed, 9 insertions, 0 deletions
diff --git a/NEWS b/NEWS
index 4c4cd002d..1b672285d 100644
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,7 @@ ver 0.15 - (200?/??/??)
* failure to read the state file is non-fatal
* fix minor memory leak in decoder_tag()
* added Icy-Metadata support
+* fix cross-fading bug: it used to play some chunks of the new song twice
ver 0.14 (2008/12/25)
* audio outputs:
diff --git a/src/player_thread.c b/src/player_thread.c
index 55a3132bb..acaf7e123 100644
--- a/src/player_thread.c
+++ b/src/player_thread.c
@@ -451,6 +451,14 @@ static void do_play(void)
music_pipe_set_lazy(false);
notify_signal(&dc.notify);
notify_wait(&pc.notify);
+
+ /* set nextChunk to a
+ non-negative value
+ so the next
+ iteration doesn't
+ assume crossfading
+ hasn't begun yet */
+ nextChunk = 0;
continue;
}
}