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
This commit is contained in:
Max Kellermann 2008-04-12 04:13:51 +00:00 committed by Eric Wong
parent 11a5728e1d
commit 2e648b57f3
3 changed files with 13 additions and 4 deletions

View File

@ -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 */

View File

@ -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)

View File

@ -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?