Make auxiliary effect slot count configurable

This commit is contained in:
Chris Robinson 2009-04-11 18:16:05 -07:00
parent 1c54018111
commit 30f57d0824
4 changed files with 10 additions and 2 deletions

View File

@ -479,6 +479,8 @@ static ALvoid InitContext(ALCcontext *pContext)
pContext->lNumStereoSources = 1;
pContext->lNumMonoSources = pContext->Device->MaxNoOfSources - pContext->lNumStereoSources;
pContext->AuxiliaryEffectSlotMax = GetConfigValueInt(NULL, "slots", 4);
pContext->ExtensionList = "AL_EXTX_buffer_sub_data AL_EXT_EXPONENT_DISTANCE AL_EXT_FLOAT32 AL_EXT_IMA4 AL_EXT_LINEAR_DISTANCE AL_EXT_MCFORMATS AL_EXT_OFFSET AL_EXTX_source_distance_model AL_LOKI_quadriphonic";
level = GetConfigValueInt(NULL, "cf_level", 0);

View File

@ -194,6 +194,8 @@ struct ALCcontext_struct
struct ALeffectslot *AuxiliaryEffectSlot;
ALuint AuxiliaryEffectSlotCount;
// Maximum number of slots that can be created
ALuint AuxiliaryEffectSlotMax;
ALenum LastError;
ALboolean InUse;

View File

@ -50,8 +50,7 @@ ALvoid AL_APIENTRY alGenAuxiliaryEffectSlots(ALsizei n, ALuint *effectslots)
if (n > 0)
{
/* NOTE: We only support one slot currently */
if(n == 1 && Context->AuxiliaryEffectSlotCount == 0)
if(Context->AuxiliaryEffectSlotCount+n <= Context->AuxiliaryEffectSlotMax)
{
// Check that enough memory has been allocted in the 'effectslots' array for n Effect Slots
if (!IsBadWritePtr((void*)effectslots, n * sizeof(ALuint)))

View File

@ -67,6 +67,11 @@ excludefx = # Sets which effects to exclude, preventing apps from using them.
# reverb
# Default is empty (all available effects enabled)
slots = 4 # Sets the maximum number of Auxiliary Effect Slots an app can
# create. A slot can use a non-negligible amount of CPU time if an
# effect is set on it even if no sources are feeding it, so this may
# help when apps use more than the system can handle. Default is 4
layout_STEREO = # Sets the speaker layout when using stereo output. Values are
# specified in degrees, where 0 is straight in front, negative
# goes left, and positive goes right. The values must define a