aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Alc/ALc.c5
-rw-r--r--OpenAL32/Include/alMain.h4
-rw-r--r--OpenAL32/alAuxEffectSlot.c4
3 files changed, 9 insertions, 4 deletions
diff --git a/Alc/ALc.c b/Alc/ALc.c
index 905ac6e8..8812cdea 100644
--- a/Alc/ALc.c
+++ b/Alc/ALc.c
@@ -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)))