aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2009-10-21 02:03:33 -0700
committerChris Robinson <[email protected]>2009-10-21 02:03:33 -0700
commitd3ecbd75affa0c42290c24a1cd82019e89ea3461 (patch)
tree9f271a712fc98f518e2de1139f5065c67b17d569
parent75b65ab2a29aa10a054974f443cc94ccf5e70f3e (diff)
Clear the echo and delay lines even if the buffer doesn't change size
-rw-r--r--Alc/alcEcho.c7
-rw-r--r--Alc/alcReverb.c6
2 files changed, 6 insertions, 7 deletions
diff --git a/Alc/alcEcho.c b/Alc/alcEcho.c
index 431fa08e..0c0f19ed 100644
--- a/Alc/alcEcho.c
+++ b/Alc/alcEcho.c
@@ -88,7 +88,7 @@ ALvoid EchoDestroy(ALeffectState *effect)
ALboolean EchoDeviceUpdate(ALeffectState *effect, ALCdevice *Device)
{
ALechoState *state = (ALechoState*)effect;
- ALuint maxlen;
+ ALuint maxlen, i;
// Use the next power of 2 for the buffer length, so the tap offsets can be
// wrapped using a mask instead of a modulo
@@ -99,7 +99,6 @@ ALboolean EchoDeviceUpdate(ALeffectState *effect, ALCdevice *Device)
if(maxlen != state->BufferLength)
{
void *temp;
- ALuint i;
temp = realloc(state->SampleBuffer, maxlen * sizeof(ALfloat));
if(!temp)
@@ -108,9 +107,9 @@ ALboolean EchoDeviceUpdate(ALeffectState *effect, ALCdevice *Device)
return AL_FALSE;
}
state->BufferLength = maxlen;
- for(i = 0;i < state->BufferLength;i++)
- state->SampleBuffer[i] = 0.0f;
}
+ for(i = 0;i < state->BufferLength;i++)
+ state->SampleBuffer[i] = 0.0f;
return AL_TRUE;
}
diff --git a/Alc/alcReverb.c b/Alc/alcReverb.c
index 7579933e..2cfe341e 100644
--- a/Alc/alcReverb.c
+++ b/Alc/alcReverb.c
@@ -431,9 +431,6 @@ ALboolean VerbDeviceUpdate(ALeffectState *effect, ALCdevice *Device)
State->TotalLength = totalLength;
State->SampleBuffer = temp;
- for(index = 0; index < totalLength;index++)
- State->SampleBuffer[index] = 0.0f;
-
// All lines share a single sample buffer
State->Delay.Mask = length[0] - 1;
State->Delay.Line = &State->SampleBuffer[0];
@@ -466,6 +463,9 @@ ALboolean VerbDeviceUpdate(ALeffectState *effect, ALCdevice *Device)
Device->Frequency);
}
+ for(index = 0;index < State->TotalLength;index++)
+ State->SampleBuffer[index] = 0.0f;
+
return AL_TRUE;
}