From 52663e8a44471570a9b2519e163e3252fc2f65bf Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 23 Apr 2010 07:23:38 -0700 Subject: Combine two loops into one --- OpenAL32/alSource.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) (limited to 'OpenAL32/alSource.c') diff --git a/OpenAL32/alSource.c b/OpenAL32/alSource.c index 969c49d1..a073b8a4 100644 --- a/OpenAL32/alSource.c +++ b/OpenAL32/alSource.c @@ -1795,28 +1795,23 @@ static ALvoid GetSourceOffset(ALsource *Source, ALenum name, ALfloat *offset, AL // Get Current BytesPlayed (NOTE : This is the byte offset into the *current* buffer) readPos = Source->position * Channels * Bytes; // Add byte length of any processed buffers in the queue + TotalBufferDataSize = 0; BufferList = Source->queue; - for(i = 0;i < Source->BuffersPlayed && BufferList;i++) + for(i = 0;BufferList;i++) { if(BufferList->buffer) - readPos += BufferList->buffer->size; + { + if(i < Source->BuffersPlayed) + readPos += BufferList->buffer->size; + TotalBufferDataSize += BufferList->buffer->size; + } BufferList = BufferList->next; } - if(Source->state == AL_PLAYING) writePos = readPos + ((ALuint)(updateLen*BufferFreq) * Channels * Bytes); else writePos = readPos; - TotalBufferDataSize = 0; - BufferList = Source->queue; - while(BufferList) - { - if(BufferList->buffer) - TotalBufferDataSize += BufferList->buffer->size; - BufferList = BufferList->next; - } - if(Source->bLooping) { readPos %= TotalBufferDataSize; -- cgit v1.2.3