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 "conf.h"
|
||||||
#include "os_compat.h"
|
#include "os_compat.h"
|
||||||
|
|
||||||
static mpd_sint16 currentChunk = -1;
|
|
||||||
|
|
||||||
void initOutputBuffer(OutputBuffer * cb, OutputBufferChunk * chunks)
|
void initOutputBuffer(OutputBuffer * cb, OutputBufferChunk * chunks)
|
||||||
{
|
{
|
||||||
memset(&cb->convState, 0, sizeof(ConvState));
|
memset(&cb->convState, 0, sizeof(ConvState));
|
||||||
cb->chunks = chunks;
|
cb->chunks = chunks;
|
||||||
|
cb->currentChunk = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void clearOutputBuffer(OutputBuffer * cb)
|
void clearOutputBuffer(OutputBuffer * cb)
|
||||||
{
|
{
|
||||||
cb->end = cb->begin;
|
cb->end = cb->begin;
|
||||||
currentChunk = -1;
|
cb->currentChunk = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void flushOutputBuffer(OutputBuffer * cb)
|
void flushOutputBuffer(OutputBuffer * cb)
|
||||||
{
|
{
|
||||||
if (currentChunk == cb->end) {
|
if (cb->currentChunk == cb->end) {
|
||||||
if (((unsigned)cb->end + 1) >= buffered_chunks) {
|
if (((unsigned)cb->end + 1) >= buffered_chunks) {
|
||||||
cb->end = 0;
|
cb->end = 0;
|
||||||
}
|
}
|
||||||
else cb->end++;
|
else cb->end++;
|
||||||
currentChunk = -1;
|
cb->currentChunk = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -119,8 +118,8 @@ static int tailChunk(OutputBuffer * cb, InputStream * inStream,
|
|||||||
unsigned int next;
|
unsigned int next;
|
||||||
OutputBufferChunk *chunk;
|
OutputBufferChunk *chunk;
|
||||||
|
|
||||||
if (currentChunk == cb->end)
|
if (cb->currentChunk == cb->end)
|
||||||
return currentChunk;
|
return cb->currentChunk;
|
||||||
|
|
||||||
next = cb->end + 1;
|
next = cb->end + 1;
|
||||||
if (next >= buffered_chunks) {
|
if (next >= buffered_chunks) {
|
||||||
@ -144,13 +143,13 @@ static int tailChunk(OutputBuffer * cb, InputStream * inStream,
|
|||||||
if (dc->stop)
|
if (dc->stop)
|
||||||
return OUTPUT_BUFFER_DC_STOP;
|
return OUTPUT_BUFFER_DC_STOP;
|
||||||
|
|
||||||
currentChunk = cb->end;
|
cb->currentChunk = cb->end;
|
||||||
chunk = outputBufferGetChunk(cb, currentChunk);
|
chunk = outputBufferGetChunk(cb, cb->currentChunk);
|
||||||
chunk->chunkSize = 0;
|
chunk->chunkSize = 0;
|
||||||
chunk->bitRate = bitRate;
|
chunk->bitRate = bitRate;
|
||||||
chunk->times = data_time;
|
chunk->times = data_time;
|
||||||
|
|
||||||
return currentChunk;
|
return cb->currentChunk;
|
||||||
}
|
}
|
||||||
|
|
||||||
int sendDataToOutputBuffer(OutputBuffer * cb, InputStream * inStream,
|
int sendDataToOutputBuffer(OutputBuffer * cb, InputStream * inStream,
|
||||||
|
@ -52,6 +52,8 @@ typedef struct _OutputBuffer {
|
|||||||
/** the index after the last decoded chunk */
|
/** the index after the last decoded chunk */
|
||||||
mpd_uint16 volatile end;
|
mpd_uint16 volatile end;
|
||||||
|
|
||||||
|
mpd_sint16 currentChunk;
|
||||||
|
|
||||||
AudioFormat audioFormat;
|
AudioFormat audioFormat;
|
||||||
ConvState convState;
|
ConvState convState;
|
||||||
} OutputBuffer;
|
} OutputBuffer;
|
||||||
|
Loading…
Reference in New Issue
Block a user