moved currentChunk into OutputBuffer
currentChunk is a global variable, which renders the whole output buffer code non-reentrant. Although this is not a real problem since there is only one global output buffer currently, we should move it to the OutputBuffer struct. git-svn-id: https://svn.musicpd.org/mpd/trunk@7284 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
parent
4ee8396f41
commit
079f13bc7d
@ -26,28 +26,27 @@
|
||||
#include "conf.h"
|
||||
#include "os_compat.h"
|
||||
|
||||
static mpd_sint16 currentChunk = -1;
|
||||
|
||||
void initOutputBuffer(OutputBuffer * cb, OutputBufferChunk * chunks)
|
||||
{
|
||||
memset(&cb->convState, 0, sizeof(ConvState));
|
||||
cb->chunks = chunks;
|
||||
cb->currentChunk = -1;
|
||||
}
|
||||
|
||||
void clearOutputBuffer(OutputBuffer * cb)
|
||||
{
|
||||
cb->end = cb->begin;
|
||||
currentChunk = -1;
|
||||
cb->currentChunk = -1;
|
||||
}
|
||||
|
||||
void flushOutputBuffer(OutputBuffer * cb)
|
||||
{
|
||||
if (currentChunk == cb->end) {
|
||||
if (cb->currentChunk == cb->end) {
|
||||
if (((unsigned)cb->end + 1) >= buffered_chunks) {
|
||||
cb->end = 0;
|
||||
}
|
||||
else cb->end++;
|
||||
currentChunk = -1;
|
||||
cb->currentChunk = -1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -119,8 +118,8 @@ static int tailChunk(OutputBuffer * cb, InputStream * inStream,
|
||||
unsigned int next;
|
||||
OutputBufferChunk *chunk;
|
||||
|
||||
if (currentChunk == cb->end)
|
||||
return currentChunk;
|
||||
if (cb->currentChunk == cb->end)
|
||||
return cb->currentChunk;
|
||||
|
||||
next = cb->end + 1;
|
||||
if (next >= buffered_chunks) {
|
||||
@ -144,13 +143,13 @@ static int tailChunk(OutputBuffer * cb, InputStream * inStream,
|
||||
if (dc->stop)
|
||||
return OUTPUT_BUFFER_DC_STOP;
|
||||
|
||||
currentChunk = cb->end;
|
||||
chunk = outputBufferGetChunk(cb, currentChunk);
|
||||
cb->currentChunk = cb->end;
|
||||
chunk = outputBufferGetChunk(cb, cb->currentChunk);
|
||||
chunk->chunkSize = 0;
|
||||
chunk->bitRate = bitRate;
|
||||
chunk->times = data_time;
|
||||
|
||||
return currentChunk;
|
||||
return cb->currentChunk;
|
||||
}
|
||||
|
||||
int sendDataToOutputBuffer(OutputBuffer * cb, InputStream * inStream,
|
||||
|
@ -52,6 +52,8 @@ typedef struct _OutputBuffer {
|
||||
/** the index after the last decoded chunk */
|
||||
mpd_uint16 volatile end;
|
||||
|
||||
mpd_sint16 currentChunk;
|
||||
|
||||
AudioFormat audioFormat;
|
||||
ConvState convState;
|
||||
} OutputBuffer;
|
||||
|
Loading…
Reference in New Issue
Block a user