summaryrefslogtreecommitdiffstats
path: root/Alc
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2014-10-02 21:19:34 -0700
committerChris Robinson <[email protected]>2014-10-02 21:19:34 -0700
commit70b23ab77f99c6e4baeca3cb74355a027cf6769d (patch)
treebadc3fce317db7928dc2ddf06b870cf96c32413b /Alc
parent79fb86d8f79459b0144e4de750e9b6f07c4de473 (diff)
Add a helper to search for a channel index by name
Diffstat (limited to 'Alc')
-rw-r--r--Alc/ALc.c2
-rw-r--r--Alc/ALu.c14
-rw-r--r--Alc/effects/dedicated.c18
3 files changed, 13 insertions, 21 deletions
diff --git a/Alc/ALc.c b/Alc/ALc.c
index 6a0a1ed0..04c3f398 100644
--- a/Alc/ALc.c
+++ b/Alc/ALc.c
@@ -1535,6 +1535,8 @@ void SetDefaultChannelOrder(ALCdevice *device)
}
}
+extern inline ALint GetChannelIdxByName(const ALCdevice *device, enum Channel chan);
+
/* alcSetError
*
diff --git a/Alc/ALu.c b/Alc/ALu.c
index 564ab133..49ebd0c2 100644
--- a/Alc/ALu.c
+++ b/Alc/ALu.c
@@ -409,15 +409,8 @@ ALvoid CalcNonAttnSourceParams(ALvoice *voice, const ALsource *ALSource, const A
for(j = 0;j < MaxChannels;j++)
gains[j].Target = 0.0f;
- for(i = 0;i < (ALint)Device->NumSpeakers;i++)
- {
- enum Channel chan = Device->Speaker[i].ChanName;
- if(chan == chans[c].channel)
- {
- gains[chan].Target = DryGain;
- break;
- }
- }
+ if(GetChannelIdxByName(Device, chans[c].channel) != -1)
+ gains[chans[c].channel].Target = DryGain;
}
UpdateDryStepping(&voice->Direct, num_channels);
@@ -467,7 +460,8 @@ ALvoid CalcNonAttnSourceParams(ALvoice *voice, const ALsource *ALSource, const A
{
for(i = 0;i < MaxChannels;i++)
Target[i] = 0.0f;
- Target[chans[c].channel] = DryGain;
+ if(GetChannelIdxByName(Device, chans[c].channel) != -1)
+ Target[chans[c].channel] = DryGain;
ok = true;
}
else for(i = 0;i < (ALint)Device->NumSpeakers;i++)
diff --git a/Alc/effects/dedicated.c b/Alc/effects/dedicated.c
index ea028046..e3014967 100644
--- a/Alc/effects/dedicated.c
+++ b/Alc/effects/dedicated.c
@@ -55,21 +55,17 @@ static ALvoid ALdedicatedState_update(ALdedicatedState *state, ALCdevice *device
Gain = Slot->Gain * Slot->EffectProps.Dedicated.Gain;
if(Slot->EffectType == AL_EFFECT_DEDICATED_LOW_FREQUENCY_EFFECT)
- state->gains[LFE] = Gain;
+ {
+ if(GetChannelIdxByName(device, LFE) != -1)
+ state->gains[LFE] = Gain;
+ }
else if(Slot->EffectType == AL_EFFECT_DEDICATED_DIALOGUE)
{
- ALboolean done = AL_FALSE;
/* Dialog goes to the front-center speaker if it exists, otherwise it
* plays from the front-center location. */
- for(i = 0;i < device->NumSpeakers;i++)
- {
- if(device->Speaker[i].ChanName == FrontCenter)
- {
- state->gains[FrontCenter] = Gain;
- done = AL_TRUE;
- }
- }
- if(!done)
+ if(GetChannelIdxByName(device, FrontCenter) != -1)
+ state->gains[FrontCenter] = Gain;
+ else
{
static const ALfloat front_dir[3] = { 0.0f, 0.0f, -1.0f };
ComputeDirectionalGains(device, front_dir, Gain, state->gains);