aboutsummaryrefslogtreecommitdiffstats
path: root/src/pipe.c
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2008-11-13 02:09:33 +0100
committerMax Kellermann <max@duempel.org>2008-11-13 02:09:33 +0100
commit709640422c07b8f79c9ffad6ffde0d1f5f317523 (patch)
tree373a331f0ff09a67487d4525e8a3fb9b8b7e3dc0 /src/pipe.c
parent66ce1495f07cd065346cdc2067b034e142a0fa96 (diff)
downloadmpd-709640422c07b8f79c9ffad6ffde0d1f5f317523.tar.gz
mpd-709640422c07b8f79c9ffad6ffde0d1f5f317523.tar.xz
mpd-709640422c07b8f79c9ffad6ffde0d1f5f317523.zip
player: chop the tail of the music pipe after CANCEL
When a CANCEL command is received, the player should drop all chunks of the next song. Added new funciton music_pipe_chop() which is used for that.
Diffstat (limited to 'src/pipe.c')
-rw-r--r--src/pipe.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/pipe.c b/src/pipe.c
index 7afbefcb1..23a23469c 100644
--- a/src/pipe.c
+++ b/src/pipe.c
@@ -301,6 +301,18 @@ void music_pipe_skip(unsigned num)
music_pipe_shift();
}
+void music_pipe_chop(unsigned first)
+{
+ for (unsigned i = first; i != music_pipe.end; i = successor(i))
+ music_chunk_free(&music_pipe.chunks[i]);
+
+ music_chunk_free(&music_pipe.chunks[music_pipe.end]);
+
+ music_pipe.end = first;
+ music_chunk_init(&music_pipe.chunks[first]);
+
+}
+
#ifndef NDEBUG
void music_pipe_check_format(const struct audio_format *current,
int next_index, const struct audio_format *next)