aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--OpenAL32/alExtension.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/OpenAL32/alExtension.c b/OpenAL32/alExtension.c
index 59ca48aa..3ed4395a 100644
--- a/OpenAL32/alExtension.c
+++ b/OpenAL32/alExtension.c
@@ -326,8 +326,28 @@ AL_API ALvoid* AL_APIENTRY alGetProcAddress(const ALchar *funcName)
AL_API ALenum AL_APIENTRY alGetEnumValue(const ALchar *enumName)
{
- ALsizei i = 0;
+ const struct {
+ const char *name;
+ int type;
+ } EffectList[] = {
+ { "AL_EFFECT_EAXREVERB", EAXREVERB },
+ { "AL_EFFECT_REVERB", REVERB },
+ { "AL_EFFECT_ECHO", ECHO },
+ { "AL_EFFECT_RING_MODULATOR", MODULATOR },
+ { "AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT", DEDICATED },
+ { "AL_EFFECT_DEDICATED_DIALOGUE", DEDICATED },
+ { NULL, 0 }
+ };
+ ALsizei i;
+
+ for(i = 0;EffectList[i].name;i++)
+ {
+ if(DisabledEffects[EffectList[i].type] &&
+ strcmp(EffectList[i].name, enumName) == 0)
+ return (ALenum)0;
+ }
+ i = 0;
while(enumeration[i].enumName &&
strcmp(enumeration[i].enumName, enumName) != 0)
i++;