Fix default effect initialization

This commit is contained in:
Chris Robinson
2017-07-19 18:26:46 -07:00
parent fea74124c8
commit f91445029d
+11 -28
View File
@@ -3648,38 +3648,13 @@ ALC_API ALCcontext* ALC_APIENTRY alcCreateContext(ALCdevice *device, const ALCin
if(DefaultEffect.type != AL_EFFECT_NULL && device->Type == Playback)
{
ALContext->DefaultSlot = (ALeffectslot*)(ALContext->_listener_mem + sizeof(ALlistener));
if(InitEffectSlot(ALContext->DefaultSlot) != AL_NO_ERROR)
if(InitEffectSlot(ALContext->DefaultSlot) == AL_NO_ERROR)
aluInitEffectPanning(ALContext->DefaultSlot);
else
{
ALContext->DefaultSlot = NULL;
ERR("Failed to initialize the default effect slot\n");
}
else
{
aluInitEffectPanning(ALContext->DefaultSlot);
if(InitializeEffect(device, ALContext->DefaultSlot, &DefaultEffect) != AL_NO_ERROR)
{
DeinitEffectSlot(ALContext->DefaultSlot);
ALContext->DefaultSlot = NULL;
ERR("Failed to initialize the default effect\n");
}
}
if(ALContext->DefaultSlot)
{
ALeffectslot *slot = ALContext->DefaultSlot;
ALeffectState *state = slot->Effect.State;
START_MIXER_MODE();
state->OutBuffer = device->Dry.Buffer;
state->OutChannels = device->Dry.NumChannels;
if(V(state,deviceUpdate)(device) != AL_FALSE)
UpdateEffectSlotProps(slot);
else
{
DeinitEffectSlot(ALContext->DefaultSlot);
ALContext->DefaultSlot = NULL;
}
END_MIXER_MODE();
}
}
ALCdevice_IncRef(ALContext->Device);
@@ -3709,6 +3684,14 @@ ALC_API ALCcontext* ALC_APIENTRY alcCreateContext(ALCdevice *device, const ALCin
}
almtx_unlock(&device->BackendLock);
if(ALContext->DefaultSlot)
{
if(InitializeEffect(device, ALContext->DefaultSlot, &DefaultEffect) == AL_NO_ERROR)
UpdateEffectSlotProps(ALContext->DefaultSlot);
else
ERR("Failed to initialize the default effect\n");
}
ALCdevice_DecRef(device);
TRACE("Created context %p\n", ALContext);