Update queued buffer states when source looping is toggled

This commit is contained in:
Chris Robinson
2009-08-11 07:57:18 -07:00
parent 00a9cf4a85
commit 4ee3972f15
+13
View File
@@ -532,6 +532,7 @@ ALAPI ALvoid ALAPIENTRY alSourcei(ALuint source,ALenum eParam,ALint lValue)
ALCcontext *pContext;
ALsource *pSource;
ALbufferlistitem *pALBufferListItem;
ALuint i;
pContext = alcGetCurrentContext();
if (pContext)
@@ -573,7 +574,19 @@ 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;