Update sources automatically when device parameters change
This commit is contained in:
@@ -1158,6 +1158,29 @@ static ALCboolean UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
|
||||
device->PendingClicks[i] = 0.0f;
|
||||
}
|
||||
|
||||
if(device->FmtChans != DevFmtStereo || device->Frequency != 44100)
|
||||
{
|
||||
if((device->Flags&DEVICE_USE_HRTF))
|
||||
AL_PRINT("HRTF disabled (format is not 44100hz stereo)\n");
|
||||
device->Flags &= ~DEVICE_USE_HRTF;
|
||||
}
|
||||
|
||||
if(!(device->Flags&DEVICE_USE_HRTF) && device->Bs2bLevel > 0 && device->Bs2bLevel <= 6)
|
||||
{
|
||||
if(!device->Bs2b)
|
||||
{
|
||||
device->Bs2b = calloc(1, sizeof(*device->Bs2b));
|
||||
bs2b_clear(device->Bs2b);
|
||||
}
|
||||
bs2b_set_srate(device->Bs2b, device->Frequency);
|
||||
bs2b_set_level(device->Bs2b, device->Bs2bLevel);
|
||||
}
|
||||
else
|
||||
{
|
||||
free(device->Bs2b);
|
||||
device->Bs2b = NULL;
|
||||
}
|
||||
|
||||
for(i = 0;i < device->NumContexts;i++)
|
||||
{
|
||||
ALCcontext *context = device->Contexts[i];
|
||||
@@ -1189,34 +1212,12 @@ static ALCboolean UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
|
||||
source->Send[s].WetFilter.filter = 0;
|
||||
s++;
|
||||
}
|
||||
source->NeedsUpdate = AL_TRUE;
|
||||
ALsource_Update(source, context);
|
||||
source->NeedsUpdate = AL_FALSE;
|
||||
}
|
||||
ProcessContext(context);
|
||||
}
|
||||
|
||||
if(device->FmtChans != DevFmtStereo || device->Frequency != 44100)
|
||||
{
|
||||
if((device->Flags&DEVICE_USE_HRTF))
|
||||
AL_PRINT("HRTF disabled (format is not 44100hz stereo)\n");
|
||||
device->Flags &= ~DEVICE_USE_HRTF;
|
||||
}
|
||||
|
||||
if(!(device->Flags&DEVICE_USE_HRTF) && device->Bs2bLevel > 0 && device->Bs2bLevel <= 6)
|
||||
{
|
||||
if(!device->Bs2b)
|
||||
{
|
||||
device->Bs2b = calloc(1, sizeof(*device->Bs2b));
|
||||
bs2b_clear(device->Bs2b);
|
||||
}
|
||||
bs2b_set_srate(device->Bs2b, device->Frequency);
|
||||
bs2b_set_level(device->Bs2b, device->Bs2bLevel);
|
||||
}
|
||||
else
|
||||
{
|
||||
free(device->Bs2b);
|
||||
device->Bs2b = NULL;
|
||||
}
|
||||
|
||||
return ALC_TRUE;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user