aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2012-01-19 19:30:03 -0800
committerChris Robinson <[email protected]>2012-01-19 19:30:03 -0800
commit51e81f4867a02001f390222b6ce86bf212a38bd6 (patch)
tree8391b8f6dee8924223a80140a67f644a53b5fa7d /OpenAL32
parentae7b61b040059f7112ad6fb38340b8c25d3393b7 (diff)
Add a global option to apply a reverb effect on source send 0
A special slot on the device is created and processed, so it can be shared across all contexts on the device. Sources that don't have a slot set on send 0 will use this special slot instead.
Diffstat (limited to 'OpenAL32')
-rw-r--r--OpenAL32/Include/alAuxEffectSlot.h1
-rw-r--r--OpenAL32/Include/alEffect.h1
-rw-r--r--OpenAL32/Include/alMain.h3
-rw-r--r--OpenAL32/alAuxEffectSlot.c3
-rw-r--r--OpenAL32/alEffect.c6
5 files changed, 12 insertions, 2 deletions
diff --git a/OpenAL32/Include/alAuxEffectSlot.h b/OpenAL32/Include/alAuxEffectSlot.h
index cdff330f..1646031c 100644
--- a/OpenAL32/Include/alAuxEffectSlot.h
+++ b/OpenAL32/Include/alAuxEffectSlot.h
@@ -35,6 +35,7 @@ typedef struct ALeffectslot
} ALeffectslot;
+ALvoid InitializeEffect(ALCcontext *Context, ALeffectslot *EffectSlot, ALeffect *effect);
ALvoid ReleaseALAuxiliaryEffectSlots(ALCcontext *Context);
diff --git a/OpenAL32/Include/alEffect.h b/OpenAL32/Include/alEffect.h
index 566458c6..264ada0d 100644
--- a/OpenAL32/Include/alEffect.h
+++ b/OpenAL32/Include/alEffect.h
@@ -102,6 +102,7 @@ typedef struct ALeffect
static __inline ALboolean IsReverbEffect(ALenum type)
{ return type == AL_EFFECT_REVERB || type == AL_EFFECT_EAXREVERB; }
+ALvoid GetReverbEffect(ALeffect *effect);
ALvoid ReleaseALEffects(ALCdevice *device);
#ifdef __cplusplus
diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h
index c0ffbe5a..fa88a4e4 100644
--- a/OpenAL32/Include/alMain.h
+++ b/OpenAL32/Include/alMain.h
@@ -598,6 +598,9 @@ struct ALCdevice_struct
ALfloat ClickRemoval[MAXCHANNELS];
ALfloat PendingClicks[MAXCHANNELS];
+ /* Default effect slot */
+ struct ALeffectslot *DefaultSlot;
+
// Contexts created on this device
ALCcontext *volatile ContextList;
diff --git a/OpenAL32/alAuxEffectSlot.c b/OpenAL32/alAuxEffectSlot.c
index 03a6218b..6c4a31f2 100644
--- a/OpenAL32/alAuxEffectSlot.c
+++ b/OpenAL32/alAuxEffectSlot.c
@@ -32,7 +32,6 @@
#include "alSource.h"
-static ALvoid InitializeEffect(ALCcontext *Context, ALeffectslot *EffectSlot, ALeffect *effect);
static ALenum ResizeEffectSlotArray(ALCcontext *Context, ALsizei count);
static ALvoid RemoveEffectSlotArray(ALCcontext *Context, ALeffectslot *val);
@@ -512,7 +511,7 @@ static ALenum ResizeEffectSlotArray(ALCcontext *Context, ALsizei count)
return AL_NO_ERROR;
}
-static ALvoid InitializeEffect(ALCcontext *Context, ALeffectslot *EffectSlot, ALeffect *effect)
+ALvoid InitializeEffect(ALCcontext *Context, ALeffectslot *EffectSlot, ALeffect *effect)
{
ALenum newtype = (effect ? effect->type : AL_EFFECT_NULL);
ALeffectState *State = NULL;
diff --git a/OpenAL32/alEffect.c b/OpenAL32/alEffect.c
index 11212009..d7f7c3c1 100644
--- a/OpenAL32/alEffect.c
+++ b/OpenAL32/alEffect.c
@@ -1306,3 +1306,9 @@ static void InitEffectParams(ALeffect *effect, ALenum type)
}
effect->type = type;
}
+
+
+ALvoid GetReverbEffect(ALeffect *effect)
+{
+ InitEffectParams(effect, AL_EFFECT_EAXREVERB);
+}