diff options
author | Max Kellermann <max@duempel.org> | 2008-04-12 04:13:51 +0000 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2008-04-12 04:13:51 +0000 |
commit | 2e648b57f3f1c83f2694033900489a8290a55868 (patch) | |
tree | fec820c988db72573cb4c8c11945f3224298e22c | |
parent | 11a5728e1d9d80795f3accd3a15a9704b3497e1a (diff) | |
download | mpd-2e648b57f3f1c83f2694033900489a8290a55868.tar.gz mpd-2e648b57f3f1c83f2694033900489a8290a55868.tar.xz mpd-2e648b57f3f1c83f2694033900489a8290a55868.zip |
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
-rw-r--r-- | src/decode.c | 5 | ||||
-rw-r--r-- | src/outputBuffer.c | 10 | ||||
-rw-r--r-- | 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? |