aboutsummaryrefslogtreecommitdiffstats
path: root/Alc
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2010-09-25 23:49:57 -0700
committerChris Robinson <[email protected]>2010-09-25 23:49:57 -0700
commit08fdc5fa98c96035b4c2c1c873bfa15895542ef2 (patch)
tree20d99d53739fe56e37afd3829d22fc7c7ab61edf /Alc
parent7e362249ff57109dcb8dfb4abbade46edea5746c (diff)
Avoid updating the source in MixSource
Diffstat (limited to 'Alc')
-rw-r--r--Alc/mixer.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/Alc/mixer.c b/Alc/mixer.c
index a5c3d3c1..0b25c4d4 100644
--- a/Alc/mixer.c
+++ b/Alc/mixer.c
@@ -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++;
}