aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32/alSource.c
diff options
context:
space:
mode:
Diffstat (limited to 'OpenAL32/alSource.c')
-rw-r--r--OpenAL32/alSource.c32
1 files changed, 22 insertions, 10 deletions
diff --git a/OpenAL32/alSource.c b/OpenAL32/alSource.c
index 93000472..271d7e44 100644
--- a/OpenAL32/alSource.c
+++ b/OpenAL32/alSource.c
@@ -653,11 +653,14 @@ AL_API ALvoid AL_APIENTRY alSourcei(ALuint source,ALenum eParam,ALint lValue)
{
if(!filter)
{
- Source->DirectFilter.type = AL_FILTER_NULL;
- Source->DirectFilter.filter = 0;
+ Source->DirectGain = 1.0f;
+ Source->DirectGainHF = 1.0f;
}
else
- memcpy(&Source->DirectFilter, filter, sizeof(*filter));
+ {
+ Source->DirectGain = filter->Gain;
+ Source->DirectGainHF = filter->GainHF;
+ }
Source->NeedsUpdate = AL_TRUE;
}
else
@@ -777,11 +780,14 @@ AL_API void AL_APIENTRY alSource3i(ALuint source, ALenum eParam, ALint lValue1,
if(!ALFilter)
{
/* Disable filter */
- Source->Send[lValue2].WetFilter.type = 0;
- Source->Send[lValue2].WetFilter.filter = 0;
+ Source->Send[lValue2].WetGain = 1.0f;
+ Source->Send[lValue2].WetGainHF = 1.0f;
}
else
- memcpy(&Source->Send[lValue2].WetFilter, ALFilter, sizeof(*ALFilter));
+ {
+ Source->Send[lValue2].WetGain = ALFilter->Gain;
+ Source->Send[lValue2].WetGainHF = ALFilter->GainHF;
+ }
Source->NeedsUpdate = AL_TRUE;
}
else
@@ -1166,10 +1172,6 @@ AL_API ALvoid AL_APIENTRY alGetSourcei(ALuint source, ALenum eParam, ALint *plVa
*plValue = (ALint)Offsets[0];
break;
- case AL_DIRECT_FILTER:
- *plValue = Source->DirectFilter.filter;
- break;
-
case AL_DIRECT_FILTER_GAINHF_AUTO:
*plValue = Source->DryGainHFAuto;
break;
@@ -1741,6 +1743,8 @@ done:
static ALvoid InitSourceParams(ALsource *Source)
{
+ ALuint i;
+
Source->flInnerAngle = 360.0f;
Source->flOuterAngle = 360.0f;
Source->flPitch = 1.0f;
@@ -1780,6 +1784,14 @@ static ALvoid InitSourceParams(ALsource *Source)
Source->lSourceType = AL_UNDETERMINED;
Source->lOffset = -1;
+ Source->DirectGain = 1.0f;
+ Source->DirectGainHF = 1.0f;
+ for(i = 0;i < MAX_SENDS;i++)
+ {
+ Source->Send[i].WetGain = 1.0f;
+ Source->Send[i].WetGainHF = 1.0f;
+ }
+
Source->NeedsUpdate = AL_TRUE;
Source->HrtfMoving = AL_FALSE;