aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 3a61e1149..29ce2dcc4 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,5 @@
ver 0.15.14 (2010/??/??)
+* player_thread: fix assertion failure due to wrong music pipe on seek
* output_thread: fix assertion failure due to race condition in OPEN
* input:
- rewind: fix double free bug
diff --git a/src/player_thread.c b/src/player_thread.c
index 3d2ebcb42..d428484c7 100644
--- a/src/player_thread.c
+++ b/src/player_thread.c
@@ -334,6 +334,14 @@ static bool player_seek_decoder(struct player *player)
return false;
}
} else {
+ if (!player_dc_at_current_song(player)) {
+ /* the decoder is already decoding the "next" song,
+ but it is the same song file; exchange the pipe */
+ music_pipe_clear(player->pipe, player_buffer);
+ music_pipe_free(player->pipe);
+ player->pipe = dc.pipe;
+ }
+
pc.next_song = NULL;
player->queued = false;
}