diff options
-rw-r--r-- | Alc/ALc.c | 5 | ||||
-rw-r--r-- | OpenAL32/Include/alMain.h | 4 | ||||
-rw-r--r-- | OpenAL32/alAuxEffectSlot.c | 4 |
3 files changed, 9 insertions, 4 deletions
@@ -482,7 +482,6 @@ static ALvoid InitContext(ALCcontext *pContext) pContext->lNumStereoSources = 1; pContext->lNumMonoSources = pContext->Device->MaxNoOfSources - pContext->lNumStereoSources; - pContext->AuxiliaryEffectSlotMax = GetConfigValueInt(NULL, "slots", 4); pContext->NumSends = GetConfigValueInt(NULL, "sends", MAX_SENDS); if(pContext->NumSends > MAX_SENDS) pContext->NumSends = MAX_SENDS; @@ -1288,6 +1287,10 @@ ALCAPI ALCdevice* ALCAPIENTRY alcOpenDevice(const ALCchar *deviceName) if((ALint)device->MaxNoOfSources <= 0) device->MaxNoOfSources = 256; + device->AuxiliaryEffectSlotMax = GetConfigValueInt(NULL, "slots", 4); + if((ALint)device->AuxiliaryEffectSlotMax <= 0) + device->AuxiliaryEffectSlotMax = 4; + // Find a playback device to open SuspendContext(NULL); for(i = 0;BackendList[i].Init;i++) diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h index 82877735..5efbbbe7 100644 --- a/OpenAL32/Include/alMain.h +++ b/OpenAL32/Include/alMain.h @@ -167,6 +167,8 @@ struct ALCdevice_struct // Maximum number of sources that can be created ALuint MaxNoOfSources; + // Maximum number of slots that can be created + ALuint AuxiliaryEffectSlotMax; // Context created on this device ALCcontext *Context; @@ -195,8 +197,6 @@ struct ALCcontext_struct struct ALeffectslot *AuxiliaryEffectSlot; ALuint AuxiliaryEffectSlotCount; - // Maximum number of slots that can be created - ALuint AuxiliaryEffectSlotMax; ALenum LastError; ALboolean InUse; diff --git a/OpenAL32/alAuxEffectSlot.c b/OpenAL32/alAuxEffectSlot.c index f606a099..805bdb4b 100644 --- a/OpenAL32/alAuxEffectSlot.c +++ b/OpenAL32/alAuxEffectSlot.c @@ -49,7 +49,9 @@ ALvoid AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslots) if (n > 0) { - if(Context->AuxiliaryEffectSlotCount+n <= Context->AuxiliaryEffectSlotMax) + ALCdevice *Device = alcGetContextsDevice(Context); + + if(Context->AuxiliaryEffectSlotCount+n <= Device->AuxiliaryEffectSlotMax) { // Check that enough memory has been allocted in the 'effectslots' array for n Effect Slots if (!IsBadWritePtr((void*)effectslots, n * sizeof(ALuint))) |