Fix crash in OpenAL when no input devices are available

This commit is contained in:
Amanieu d'Antras 2013-12-09 15:59:05 +00:00 committed by Zack Middleton
parent f6f3a19f73
commit efe8437cde

View file

@ -2667,11 +2667,14 @@ qboolean S_AL_Init( soundInterface_t *si )
defaultinputdevice = qalcGetString(NULL, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER); defaultinputdevice = qalcGetString(NULL, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER);
// dump a list of available devices to a cvar for the user to see. // dump a list of available devices to a cvar for the user to see.
while((curlen = strlen(inputdevicelist))) if (inputdevicelist)
{ {
Q_strcat(inputdevicenames, sizeof(inputdevicenames), inputdevicelist); while((curlen = strlen(inputdevicelist)))
Q_strcat(inputdevicenames, sizeof(inputdevicenames), "\n"); {
inputdevicelist += curlen + 1; Q_strcat(inputdevicenames, sizeof(inputdevicenames), inputdevicelist);
Q_strcat(inputdevicenames, sizeof(inputdevicenames), "\n");
inputdevicelist += curlen + 1;
}
} }
s_alAvailableInputDevices = Cvar_Get("s_alAvailableInputDevices", inputdevicenames, CVAR_ROM | CVAR_NORESTART); s_alAvailableInputDevices = Cvar_Get("s_alAvailableInputDevices", inputdevicenames, CVAR_ROM | CVAR_NORESTART);
@ -2680,7 +2683,7 @@ qboolean S_AL_Init( soundInterface_t *si )
// !!! FIXME: should probably open the capture device after // !!! FIXME: should probably open the capture device after
// !!! FIXME: initializing Speex so we can change to wideband // !!! FIXME: initializing Speex so we can change to wideband
// !!! FIXME: if we like. // !!! FIXME: if we like.
Com_Printf("OpenAL default capture device is '%s'\n", defaultinputdevice); Com_Printf("OpenAL default capture device is '%s'\n", defaultinputdevice ? defaultinputdevice : "none");
alCaptureDevice = qalcCaptureOpenDevice(inputdevice, 8000, AL_FORMAT_MONO16, 4096); alCaptureDevice = qalcCaptureOpenDevice(inputdevice, 8000, AL_FORMAT_MONO16, 4096);
if( !alCaptureDevice && inputdevice ) if( !alCaptureDevice && inputdevice )
{ {