ref: f80ce3e92c2456282282b277fc85e96604d9e6fb
parent: 554f7a5c2fb8b4ac80034323e54c67ec12f8763a
author: Sigrid Solveig Haflínudóttir <[email protected]>
date: Fri Dec 29 21:37:26 EST 2023
openal: poke hrtf in alreinit
--- a/snd_openal.c
+++ b/snd_openal.c
@@ -537,6 +537,7 @@
{
const char *s;
int i, n;
+ bool hrtf;
n = s_al_dev.value;
if(n == s_al_dev_prev)
@@ -555,15 +556,34 @@
n = qalcReopenDeviceSOFT(dev, s, alcattr(false)) ? 0 : -1;
ALERR();
}
- if(n != 0)
+ if(n != 0){
Con_Printf("AL: failed to switch to %s\n", s);
- else
- s_al_dev_prev = n;
- return;
+ return;
+ }
+ s_al_dev_prev = n;
+ break;
}
s += strlen(s)+1;
}
- Con_Printf("AL: no such device: %d\n", n);
+ if(s == nil || !*s){
+ Con_Printf("AL: no such device: %d\n", n);
+ return;
+ }
+
+ if(alcIsExtensionPresent(dev, "ALC_SOFT_HRTF")){
+ qalcGetStringiSOFT = alcGetProcAddress(dev, "alcGetStringiSOFT");
+ qalcResetDeviceSOFT = alcGetProcAddress(dev, "alcResetDeviceSOFT");
+ hrtf = true;
+ }else{
+ qalcGetStringiSOFT = nil;
+ qalcResetDeviceSOFT = nil;
+ hrtf = false;
+ }
+
+ if(qalcResetDeviceSOFT != nil){
+ qalcResetDeviceSOFT(dev, alcattr(hrtf));
+ ALERR();
+ }
}
static void
@@ -570,7 +590,6 @@
alvarcb(cvar_t *var)
{
const char *all, *def, *s;
- bool hrtf;
int i, n;
def = alcGetString(nil, ALC_DEFAULT_ALL_DEVICES_SPECIFIER);
@@ -591,15 +610,6 @@
alreinit(def, all);
- if(alcIsExtensionPresent(dev, "ALC_SOFT_HRTF")){
- qalcGetStringiSOFT = alcGetProcAddress(dev, "alcGetStringiSOFT");
- qalcResetDeviceSOFT = alcGetProcAddress(dev, "alcResetDeviceSOFT");
- hrtf = true;
- }else{
- qalcGetStringiSOFT = nil;
- qalcResetDeviceSOFT = nil;
- hrtf = false;
- }
if(var == &s_al_hrtf && Cmd_Argc() == 1){
Con_Printf("%-2d: disabled\n", -1);
Con_Printf("%-2d: don't care (default)\n", 0);
@@ -611,12 +621,6 @@
if(!ALERR() && s != nil)
Con_Printf("%-2d: %s\n", i+1, s);
}
- return;
- }
-
- if(qalcResetDeviceSOFT != nil){
- qalcResetDeviceSOFT(dev, alcattr(hrtf));
- ALERR();
}
}