Don't pass the device to HRTF methods

This commit is contained in:
Chris Robinson
2014-06-20 16:43:14 -07:00
parent fb25a70f95
commit be903d67b8
3 changed files with 14 additions and 15 deletions
+4 -4
View File
@@ -1790,9 +1790,9 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
}
if((device->Flags&DEVICE_HRTF_REQUEST))
{
enum DevFmtChannels chans;
ALCuint freq;
if(FindHrtfFormat(device, &chans, &freq))
enum DevFmtChannels chans = device->FmtChans;
ALCuint freq = device->Frequency;
if(FindHrtfFormat(&chans, &freq))
{
if(device->Type != Loopback)
{
@@ -1843,7 +1843,7 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
device->Hrtf = NULL;
if((device->Flags&DEVICE_HRTF_REQUEST))
{
device->Hrtf = GetHrtf(device);
device->Hrtf = GetHrtf(device->FmtChans, device->Frequency);
if(!device->Hrtf)
device->Flags &= ~DEVICE_HRTF_REQUEST;
}
+8 -9
View File
@@ -745,40 +745,39 @@ static struct Hrtf *LoadHrtf(ALuint deviceRate)
return NULL;
}
const struct Hrtf *GetHrtf(ALCdevice *device)
const struct Hrtf *GetHrtf(enum DevFmtChannels chans, ALCuint srate)
{
if(device->FmtChans == DevFmtStereo)
if(chans == DevFmtStereo)
{
struct Hrtf *Hrtf = LoadedHrtfs;
while(Hrtf != NULL)
{
if(device->Frequency == Hrtf->sampleRate)
if(srate == Hrtf->sampleRate)
return Hrtf;
Hrtf = Hrtf->next;
}
Hrtf = LoadHrtf(device->Frequency);
Hrtf = LoadHrtf(srate);
if(Hrtf != NULL)
return Hrtf;
}
ERR("Incompatible format: %s %uhz\n",
DevFmtChannelsString(device->FmtChans), device->Frequency);
ERR("Incompatible format: %s %uhz\n", DevFmtChannelsString(chans), srate);
return NULL;
}
ALCboolean FindHrtfFormat(const ALCdevice *device, enum DevFmtChannels *chans, ALCuint *srate)
ALCboolean FindHrtfFormat(enum DevFmtChannels *chans, ALCuint *srate)
{
const struct Hrtf *hrtf = LoadedHrtfs;
while(hrtf != NULL)
{
if(device->Frequency == hrtf->sampleRate)
if(*srate == hrtf->sampleRate)
break;
hrtf = hrtf->next;
}
if(hrtf == NULL)
{
hrtf = LoadHrtf(device->Frequency);
hrtf = LoadHrtf(*srate);
if(hrtf == NULL) return ALC_FALSE;
}
+2 -2
View File
@@ -15,8 +15,8 @@ struct Hrtf;
#define HRTFDELAY_FRACONE (1<<HRTFDELAY_BITS)
#define HRTFDELAY_MASK (HRTFDELAY_FRACONE-1)
const struct Hrtf *GetHrtf(ALCdevice *device);
ALCboolean FindHrtfFormat(const ALCdevice *device, enum DevFmtChannels *chans, ALCuint *srate);
const struct Hrtf *GetHrtf(enum DevFmtChannels chans, ALCuint srate);
ALCboolean FindHrtfFormat(enum DevFmtChannels *chans, ALCuint *srate);
void FreeHrtfs(void);