From 2e648b57f3f1c83f2694033900489a8290a55868 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 12 Apr 2008 04:13:51 +0000 Subject: added outputBufferShift() Hiding OutputBuffer internals, yet again. Two more assertions. git-svn-id: https://svn.musicpd.org/mpd/trunk@7274 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/decode.c | 5 +---- src/outputBuffer.c | 10 ++++++++++ src/outputBuffer.h | 2 ++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/decode.c b/src/decode.c index b3107cd1d..fb485a90a 100644 --- a/src/decode.c +++ b/src/decode.c @@ -557,10 +557,7 @@ static void decodeParent(PlayerControl * pc, DecoderControl * dc, OutputBuffer * break; pc->totalPlayTime += sizeToTime * beginChunk->chunkSize; - if ((unsigned)cb->begin + 1 >= buffered_chunks) { - cb->begin = 0; - } else - cb->begin++; + outputBufferShift(cb); player_wakeup_decoder_nb(); } else if (!outputBufferEmpty(cb) && cb->begin == next) { /* at the beginning of a new song */ diff --git a/src/outputBuffer.c b/src/outputBuffer.c index 48e9598f6..525f4af24 100644 --- a/src/outputBuffer.c +++ b/src/outputBuffer.c @@ -56,6 +56,16 @@ int outputBufferEmpty(const OutputBuffer * cb) return cb->begin == cb->end; } +void outputBufferShift(OutputBuffer * cb) +{ + assert(cb->begin != cb->end); + assert(cb->begin < buffered_chunks); + + ++cb->begin; + if (cb->begin >= buffered_chunks) + cb->begin = 0; +} + unsigned int outputBufferRelative(const OutputBuffer * cb, unsigned i) { if (i >= cb->begin) diff --git a/src/outputBuffer.h b/src/outputBuffer.h index a99489968..8e797c324 100644 --- a/src/outputBuffer.h +++ b/src/outputBuffer.h @@ -65,6 +65,8 @@ void flushOutputBuffer(OutputBuffer * cb); /** is the buffer empty? */ int outputBufferEmpty(const OutputBuffer * cb); +void outputBufferShift(OutputBuffer * cb); + /** * what is the position of the specified chunk number, relative to * the first chunk in use? -- cgit v1.2.3