diff options
Diffstat (limited to 'OpenAL32')
-rw-r--r-- | OpenAL32/alAuxEffectSlot.c | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/OpenAL32/alAuxEffectSlot.c b/OpenAL32/alAuxEffectSlot.c index 62d153c1..f606a099 100644 --- a/OpenAL32/alAuxEffectSlot.c +++ b/OpenAL32/alAuxEffectSlot.c @@ -471,9 +471,22 @@ static ALvoid InitializeEffect(ALCcontext *Context, ALeffectslot *ALEffectSlot, { if((!effect) || (effect->type != ALEffectSlot->effect.type)) { + ALeffectState *NewState = NULL; + if(effect) + { + if(effect->type == AL_EFFECT_EAXREVERB) + NewState = EAXVerbCreate(Context); + else if(effect->type == AL_EFFECT_REVERB) + NewState = VerbCreate(Context); + else if(effect->type == AL_EFFECT_ECHO) + NewState = EchoCreate(Context); + /* No new state? An error occured.. */ + if(!NewState) + return; + } if(ALEffectSlot->EffectState) ALEffect_Destroy(ALEffectSlot->EffectState); - ALEffectSlot->EffectState = NULL; + ALEffectSlot->EffectState = NewState; } if(!effect) { @@ -481,16 +494,6 @@ static ALvoid InitializeEffect(ALCcontext *Context, ALeffectslot *ALEffectSlot, return; } memcpy(&ALEffectSlot->effect, effect, sizeof(*effect)); - - if(!ALEffectSlot->EffectState) - { - if(effect->type == AL_EFFECT_EAXREVERB) - ALEffectSlot->EffectState = EAXVerbCreate(Context); - else if(effect->type == AL_EFFECT_REVERB) - ALEffectSlot->EffectState = VerbCreate(Context); - else if(effect->type == AL_EFFECT_ECHO) - ALEffectSlot->EffectState = EchoCreate(Context); - } ALEffect_Update(ALEffectSlot->EffectState, Context, effect); } |