From 3b517bfa599a589afff2a96f3b169935e1865cb0 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 13 Mar 2012 19:02:26 -0700 Subject: [PATCH] Initialize the default effect after opening the device --- Alc/ALc.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/Alc/ALc.c b/Alc/ALc.c index c2c3cebd..001ab4a6 100644 --- a/Alc/ALc.c +++ b/Alc/ALc.c @@ -2622,17 +2622,6 @@ ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *deviceName) device->NumStereoSources = 1; device->NumMonoSources = device->MaxNoOfSources - device->NumStereoSources; - if(DefaultEffect.type != AL_EFFECT_NULL) - { - device->DefaultSlot = (ALeffectslot*)(device+1); - if(InitEffectSlot(device->DefaultSlot) != AL_NO_ERROR || - InitializeEffect(device, device->DefaultSlot, &DefaultEffect) != AL_NO_ERROR) - { - device->DefaultSlot = NULL; - ERR("Failed to initialize the default effect\n"); - } - } - // Find a playback device to open LockLists(); if((err=ALCdevice_OpenPlayback(device, deviceName)) != ALC_NO_ERROR) @@ -2645,6 +2634,22 @@ ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *deviceName) } UnlockLists(); + if(DefaultEffect.type != AL_EFFECT_NULL) + { + device->DefaultSlot = (ALeffectslot*)(device+1); + if(InitEffectSlot(device->DefaultSlot) != AL_NO_ERROR) + { + device->DefaultSlot = NULL; + ERR("Failed to initialize the default effect slot\n"); + } + else if(InitializeEffect(device, device->DefaultSlot, &DefaultEffect) != AL_NO_ERROR) + { + ALeffectState_Destroy(device->DefaultSlot->EffectState); + device->DefaultSlot = NULL; + ERR("Failed to initialize the default effect\n"); + } + } + do { device->next = DeviceList; } while(!CompExchangePtr((XchgPtr*)&DeviceList, device->next, device)); -- 2.11.4.GIT