aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-01-04 15:02:39 +0100
committerMax Kellermann <max@duempel.org>2009-01-04 15:02:39 +0100
commit63181233bb2a28ccd3776d48aa2229df920c2ed3 (patch)
tree5f9d029f9b41978f76f3be647248685fe79457c0
parent16c224a7fa542eba121203512ef7f2b953f8e7f1 (diff)
downloadmpd-63181233bb2a28ccd3776d48aa2229df920c2ed3.tar.gz
mpd-63181233bb2a28ccd3776d48aa2229df920c2ed3.tar.xz
mpd-63181233bb2a28ccd3776d48aa2229df920c2ed3.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.
Diffstat (limited to '')
-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 808dccf07..2a766121f 100644
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,7 @@ MPD 0.14.1 - not yet released
* fix setenv() conflict on Solaris
* configure.ac: check for pkg-config before using it
* fix minor memory leak in decoder_tag()
+* fix cross-fading bug: it used to play some chunks of the new song twice
ver 0.14 (2008/12/25)
diff --git a/src/player_thread.c b/src/player_thread.c
index 7da412dfa..50e097a24 100644
--- a/src/player_thread.c
+++ b/src/player_thread.c
@@ -441,6 +441,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;
}
}