Remove unneeded bufferlistitem properties
This commit is contained in:
parent
bbccf76b45
commit
1665595138
24
Alc/ALu.c
24
Alc/ALu.c
@ -1130,11 +1130,7 @@ another_source:
|
||||
{
|
||||
BufferListItem = ALSource->queue;
|
||||
for(i = 0;i <= ALSource->BuffersPlayed && BufferListItem;i++)
|
||||
{
|
||||
if(!Looping)
|
||||
BufferListItem->bufferstate = PROCESSED;
|
||||
BufferListItem = BufferListItem->next;
|
||||
}
|
||||
if(BufferListItem)
|
||||
ALSource->Buffer = BufferListItem->buffer;
|
||||
ALSource->position = DataPosInt-DataSize;
|
||||
@ -1148,12 +1144,6 @@ another_source:
|
||||
/* alSourceStop */
|
||||
ALSource->state = AL_STOPPED;
|
||||
ALSource->BuffersPlayed = ALSource->BuffersInQueue;
|
||||
BufferListItem = ALSource->queue;
|
||||
while(BufferListItem != NULL)
|
||||
{
|
||||
BufferListItem->bufferstate = PROCESSED;
|
||||
BufferListItem = BufferListItem->next;
|
||||
}
|
||||
ALSource->position = 0;
|
||||
ALSource->position_fraction = 0;
|
||||
}
|
||||
@ -1163,12 +1153,6 @@ another_source:
|
||||
/* alSourcePlay */
|
||||
ALSource->state = AL_PLAYING;
|
||||
ALSource->BuffersPlayed = 0;
|
||||
BufferListItem = ALSource->queue;
|
||||
while(BufferListItem != NULL)
|
||||
{
|
||||
BufferListItem->bufferstate = PENDING;
|
||||
BufferListItem = BufferListItem->next;
|
||||
}
|
||||
ALSource->Buffer = ALSource->queue->buffer;
|
||||
|
||||
if(ALSource->BuffersInQueue == 1)
|
||||
@ -1387,16 +1371,8 @@ ALvoid aluHandleDisconnect(ALCdevice *device)
|
||||
{
|
||||
if(source->state == AL_PLAYING)
|
||||
{
|
||||
ALbufferlistitem *BufferListItem;
|
||||
|
||||
source->state = AL_STOPPED;
|
||||
source->BuffersPlayed = source->BuffersInQueue;
|
||||
BufferListItem = source->queue;
|
||||
while(BufferListItem != NULL)
|
||||
{
|
||||
BufferListItem->bufferstate = PROCESSED;
|
||||
BufferListItem = BufferListItem->next;
|
||||
}
|
||||
source->position = 0;
|
||||
source->position_fraction = 0;
|
||||
}
|
||||
|
@ -25,8 +25,6 @@ extern "C" {
|
||||
typedef struct ALbufferlistitem
|
||||
{
|
||||
struct ALbuffer *buffer;
|
||||
ALuint bufferstate;
|
||||
ALuint flag;
|
||||
struct ALbufferlistitem *next;
|
||||
} ALbufferlistitem;
|
||||
|
||||
|
@ -462,7 +462,6 @@ ALAPI ALvoid ALAPIENTRY alSourcei(ALuint source,ALenum eParam,ALint lValue)
|
||||
ALCcontext *pContext;
|
||||
ALsource *pSource;
|
||||
ALbufferlistitem *pALBufferListItem;
|
||||
ALuint i;
|
||||
|
||||
pContext = GetContextSuspended();
|
||||
if(!pContext) return;
|
||||
@ -502,19 +501,7 @@ ALAPI ALvoid ALAPIENTRY alSourcei(ALuint source,ALenum eParam,ALint lValue)
|
||||
|
||||
case AL_LOOPING:
|
||||
if(lValue == AL_FALSE || lValue == AL_TRUE)
|
||||
{
|
||||
pSource->bLooping = (ALboolean)lValue;
|
||||
|
||||
pALBufferListItem = pSource->queue;
|
||||
for(i = 0;pALBufferListItem != NULL;i++)
|
||||
{
|
||||
if(lValue == AL_FALSE && i <= pSource->BuffersPlayed)
|
||||
pALBufferListItem->bufferstate = PROCESSED;
|
||||
else
|
||||
pALBufferListItem->bufferstate = PENDING;
|
||||
pALBufferListItem = pALBufferListItem->next;
|
||||
}
|
||||
}
|
||||
else
|
||||
alSetError(AL_INVALID_VALUE);
|
||||
break;
|
||||
@ -551,8 +538,6 @@ ALAPI ALvoid ALAPIENTRY alSourcei(ALuint source,ALenum eParam,ALint lValue)
|
||||
// Add the selected buffer to the queue
|
||||
pALBufferListItem = malloc(sizeof(ALbufferlistitem));
|
||||
pALBufferListItem->buffer = buffer;
|
||||
pALBufferListItem->bufferstate = PENDING;
|
||||
pALBufferListItem->flag = 0;
|
||||
pALBufferListItem->next = NULL;
|
||||
|
||||
pSource->queue = pALBufferListItem;
|
||||
@ -1329,14 +1314,6 @@ ALAPI ALvoid ALAPIENTRY alSourcePlayv(ALsizei n, const ALuint *pSourceList)
|
||||
pSource->BuffersPlayed = 0;
|
||||
|
||||
pSource->Buffer = pSource->queue->buffer;
|
||||
|
||||
// Make sure all the Buffers in the queue are marked as PENDING
|
||||
ALBufferList = pSource->queue;
|
||||
while(ALBufferList)
|
||||
{
|
||||
ALBufferList->bufferstate = PENDING;
|
||||
ALBufferList = ALBufferList->next;
|
||||
}
|
||||
}
|
||||
else
|
||||
pSource->state = AL_PLAYING;
|
||||
@ -1356,28 +1333,12 @@ ALAPI ALvoid ALAPIENTRY alSourcePlayv(ALsizei n, const ALuint *pSourceList)
|
||||
{
|
||||
pSource->state = AL_STOPPED;
|
||||
pSource->BuffersPlayed = pSource->BuffersInQueue;
|
||||
ALBufferList = pSource->queue;
|
||||
while(ALBufferList != NULL)
|
||||
{
|
||||
ALBufferList->bufferstate = PROCESSED;
|
||||
ALBufferList = ALBufferList->next;
|
||||
}
|
||||
pSource->position = 0;
|
||||
pSource->position_fraction = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// If there is a queue (must all be NULL or Zero length Buffers) mark them all as processed
|
||||
ALBufferList = pSource->queue;
|
||||
while(ALBufferList)
|
||||
{
|
||||
ALBufferList->bufferstate = PROCESSED;
|
||||
ALBufferList = ALBufferList->next;
|
||||
}
|
||||
|
||||
pSource->BuffersPlayed = pSource->BuffersInQueue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1449,7 +1410,6 @@ ALAPI ALvoid ALAPIENTRY alSourceStopv(ALsizei n, const ALuint *sources)
|
||||
ALCcontext *Context;
|
||||
ALsource *Source;
|
||||
ALsizei i;
|
||||
ALbufferlistitem *ALBufferListItem;
|
||||
ALboolean bSourcesValid = AL_TRUE;
|
||||
|
||||
Context = GetContextSuspended();
|
||||
@ -1477,12 +1437,6 @@ ALAPI ALvoid ALAPIENTRY alSourceStopv(ALsizei n, const ALuint *sources)
|
||||
{
|
||||
Source->state = AL_STOPPED;
|
||||
Source->BuffersPlayed = Source->BuffersInQueue;
|
||||
ALBufferListItem = Source->queue;
|
||||
while(ALBufferListItem != NULL)
|
||||
{
|
||||
ALBufferListItem->bufferstate = PROCESSED;
|
||||
ALBufferListItem = ALBufferListItem->next;
|
||||
}
|
||||
}
|
||||
Source->lOffset = 0;
|
||||
}
|
||||
@ -1508,7 +1462,6 @@ ALAPI ALvoid ALAPIENTRY alSourceRewindv(ALsizei n, const ALuint *sources)
|
||||
ALCcontext *Context;
|
||||
ALsource *Source;
|
||||
ALsizei i;
|
||||
ALbufferlistitem *ALBufferListItem;
|
||||
ALboolean bSourcesValid = AL_TRUE;
|
||||
|
||||
Context = GetContextSuspended();
|
||||
@ -1538,12 +1491,6 @@ ALAPI ALvoid ALAPIENTRY alSourceRewindv(ALsizei n, const ALuint *sources)
|
||||
Source->position = 0;
|
||||
Source->position_fraction = 0;
|
||||
Source->BuffersPlayed = 0;
|
||||
ALBufferListItem = Source->queue;
|
||||
while(ALBufferListItem != NULL)
|
||||
{
|
||||
ALBufferListItem->bufferstate = PENDING;
|
||||
ALBufferListItem = ALBufferListItem->next;
|
||||
}
|
||||
if(Source->queue)
|
||||
Source->Buffer = Source->queue->buffer;
|
||||
}
|
||||
@ -1645,8 +1592,6 @@ ALAPI ALvoid ALAPIENTRY alSourceQueueBuffers( ALuint source, ALsizei n, const AL
|
||||
// All buffers are valid - so add them to the list
|
||||
ALBufferListStart = malloc(sizeof(ALbufferlistitem));
|
||||
ALBufferListStart->buffer = buffer;
|
||||
ALBufferListStart->bufferstate = PENDING;
|
||||
ALBufferListStart->flag = 0;
|
||||
ALBufferListStart->next = NULL;
|
||||
|
||||
// Increment reference counter for buffer
|
||||
@ -1661,8 +1606,6 @@ ALAPI ALvoid ALAPIENTRY alSourceQueueBuffers( ALuint source, ALsizei n, const AL
|
||||
|
||||
ALBufferList->next = malloc(sizeof(ALbufferlistitem));
|
||||
ALBufferList->next->buffer = buffer;
|
||||
ALBufferList->next->bufferstate = PENDING;
|
||||
ALBufferList->next->flag = 0;
|
||||
ALBufferList->next->next = NULL;
|
||||
|
||||
// Increment reference counter for buffer
|
||||
@ -1729,23 +1672,8 @@ ALAPI ALvoid ALAPIENTRY alSourceUnqueueBuffers( ALuint source, ALsizei n, ALuint
|
||||
{
|
||||
ALSource = (ALsource*)ALTHUNK_LOOKUPENTRY(source);
|
||||
|
||||
// Check that all 'n' buffers have been processed
|
||||
ALBufferList = ALSource->queue;
|
||||
for(i = 0; i < n; i++)
|
||||
{
|
||||
if(ALBufferList != NULL && ALBufferList->bufferstate == PROCESSED)
|
||||
{
|
||||
ALBufferList = ALBufferList->next;
|
||||
}
|
||||
else
|
||||
{
|
||||
bBuffersProcessed = AL_FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// If all 'n' buffers have been processed, remove them from the queue
|
||||
if(bBuffersProcessed)
|
||||
if(!ALSource->bLooping && (ALuint)n <= ALSource->BuffersPlayed)
|
||||
{
|
||||
for(i = 0; i < n; i++)
|
||||
{
|
||||
@ -1771,10 +1699,7 @@ ALAPI ALvoid ALAPIENTRY alSourceUnqueueBuffers( ALuint source, ALsizei n, ALuint
|
||||
ALSource->Buffer = NULL;
|
||||
}
|
||||
|
||||
if((ALuint)n > ALSource->BuffersPlayed)
|
||||
ALSource->BuffersPlayed = 0;
|
||||
else
|
||||
ALSource->BuffersPlayed -= n;
|
||||
ALSource->BuffersPlayed -= n;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1848,6 +1773,7 @@ static ALboolean GetSourceOffset(ALsource *pSource, ALenum eName, ALfloat *pflOf
|
||||
ALenum eOriginalFormat;
|
||||
ALboolean bReturn = AL_TRUE;
|
||||
ALint lTotalBufferDataSize;
|
||||
ALuint i;
|
||||
|
||||
if((pSource->state == AL_PLAYING || pSource->state == AL_PAUSED) && pSource->Buffer)
|
||||
{
|
||||
@ -1861,7 +1787,7 @@ static ALboolean GetSourceOffset(ALsource *pSource, ALenum eName, ALfloat *pflOf
|
||||
readPos = pSource->position * lChannels * 2; // NOTE : This is the byte offset into the *current* buffer
|
||||
// Add byte length of any processed buffers in the queue
|
||||
pBufferList = pSource->queue;
|
||||
while(pBufferList && pBufferList->bufferstate == PROCESSED)
|
||||
for(i = 0;i < pSource->BuffersPlayed && pBufferList;i++)
|
||||
{
|
||||
readPos += pBufferList->buffer->size;
|
||||
pBufferList = pBufferList->next;
|
||||
@ -2001,18 +1927,12 @@ static void ApplyOffset(ALsource *pSource, ALboolean bUpdateContext)
|
||||
|
||||
if ((lTotalBufferSize + lBufferSize) <= lByteOffset)
|
||||
{
|
||||
// Offset is past this buffer so increment BuffersPlayed and if the Source is NOT looping
|
||||
// update the state to PROCESSED
|
||||
// Offset is past this buffer so increment BuffersPlayed
|
||||
pSource->BuffersPlayed++;
|
||||
|
||||
if (!pSource->bLooping)
|
||||
pBufferList->bufferstate = PROCESSED;
|
||||
}
|
||||
else if (lTotalBufferSize <= lByteOffset)
|
||||
{
|
||||
// Offset is within this buffer
|
||||
pBufferList->bufferstate = PENDING;
|
||||
|
||||
// Set Current Buffer
|
||||
pSource->Buffer = pBufferList->buffer;
|
||||
|
||||
@ -2021,11 +1941,6 @@ static void ApplyOffset(ALsource *pSource, ALboolean bUpdateContext)
|
||||
aluBytesFromFormat(pBuffer->format) /
|
||||
aluChannelsFromFormat(pBuffer->format);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Offset is before this buffer, so mark as pending
|
||||
pBufferList->bufferstate = PENDING;
|
||||
}
|
||||
|
||||
// Increment the TotalBufferSize
|
||||
lTotalBufferSize += lBufferSize;
|
||||
|
Loading…
Reference in New Issue
Block a user