Avoid updating the source in MixSource

This commit is contained in:
Chris Robinson
2010-09-25 23:49:57 -07:00
parent 7e362249ff
commit 08fdc5fa98
+11 -10
View File
@@ -601,9 +601,9 @@ static __inline ALfloat cos_lerp16(ALfloat val1, ALfloat val2, ALint frac)
} while(0)
static void MixSource(ALsource *Source, ALCcontext *Context,
ALfloat (*DryBuffer)[OUTPUTCHANNELS], ALuint SamplesToDo,
ALfloat *ClickRemoval, ALfloat *PendingClicks)
static ALvoid MixSource(ALsource *Source, ALfloat (*DryBuffer)[OUTPUTCHANNELS],
ALuint SamplesToDo, ALfloat *ClickRemoval,
ALfloat *PendingClicks)
{
ALbufferlistitem *BufferListItem;
ALint64 DataSize64,DataPos64;
@@ -614,12 +614,6 @@ static void MixSource(ALsource *Source, ALCcontext *Context,
ALenum State;
ALuint i, j;
if(Source->NeedsUpdate)
{
ALsource_Update(Source, Context);
Source->NeedsUpdate = AL_FALSE;
}
/* Get source info */
State = Source->state;
BuffersPlayed = Source->BuffersPlayed;
@@ -808,7 +802,14 @@ ALvoid aluMixData(ALCdevice *device, ALvoid *buffer, ALsizei size)
*src = *(--src_end);
continue;
}
MixSource(*src, *ctx, DryBuffer, SamplesToDo,
if((*src)->NeedsUpdate)
{
ALsource_Update(*src, *ctx);
(*src)->NeedsUpdate = AL_FALSE;
}
MixSource(*src, DryBuffer, SamplesToDo,
device->ClickRemoval, device->PendingClicks);
src++;
}