aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/ALc.c
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2016-05-12 19:05:06 -0700
committerChris Robinson <[email protected]>2016-05-12 19:05:06 -0700
commit210e150601d9b458d446483f5f16e1e67cc6e3ba (patch)
treec7230d482b5628b334845a1f735ef3d1a42d5a98 /Alc/ALc.c
parentef0d4f8210fe6aa65b9df96f3b64bf6f355e845a (diff)
Avoid updating the effect state object if it's not changed
Diffstat (limited to 'Alc/ALc.c')
-rw-r--r--Alc/ALc.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/Alc/ALc.c b/Alc/ALc.c
index b3d7eb38..47aa0f04 100644
--- a/Alc/ALc.c
+++ b/Alc/ALc.c
@@ -2066,7 +2066,7 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
RestoreFPUMode(&oldMode);
return ALC_INVALID_DEVICE;
}
- UpdateEffectSlotProps(slot);
+ UpdateEffectSlotProps(slot, AL_FALSE);
}
context = ATOMIC_LOAD(&device->ContextList);
@@ -2078,17 +2078,18 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
for(pos = 0;pos < context->EffectSlotMap.size;pos++)
{
ALeffectslot *slot = context->EffectSlotMap.array[pos].value;
+ ALeffectState *state = slot->Params.EffectState;
- slot->Params.EffectState->OutBuffer = device->Dry.Buffer;
- slot->Params.EffectState->OutChannels = device->Dry.NumChannels;
- if(V(slot->Params.EffectState,deviceUpdate)(device) == AL_FALSE)
+ state->OutBuffer = device->Dry.Buffer;
+ state->OutChannels = device->Dry.NumChannels;
+ if(V(state,deviceUpdate)(device) == AL_FALSE)
{
UnlockUIntMapRead(&context->EffectSlotMap);
V0(device->Backend,unlock)();
RestoreFPUMode(&oldMode);
return ALC_INVALID_DEVICE;
}
- UpdateEffectSlotProps(slot);
+ UpdateEffectSlotProps(slot, AL_FALSE);
}
UnlockUIntMapRead(&context->EffectSlotMap);
@@ -3487,16 +3488,15 @@ ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *deviceName)
device->DefaultSlot = NULL;
ERR("Failed to initialize the default effect slot\n");
}
- else if(InitializeEffect(device, device->DefaultSlot, &DefaultEffect) != AL_NO_ERROR)
- {
- DeinitEffectSlot(device->DefaultSlot);
- device->DefaultSlot = NULL;
- ERR("Failed to initialize the default effect\n");
- }
else
{
aluInitEffectPanning(device->DefaultSlot);
- UpdateEffectSlotProps(device->DefaultSlot);
+ if(InitializeEffect(device, device->DefaultSlot, &DefaultEffect) != AL_NO_ERROR)
+ {
+ DeinitEffectSlot(device->DefaultSlot);
+ device->DefaultSlot = NULL;
+ ERR("Failed to initialize the default effect\n");
+ }
}
}