Don't assume the first driver has the default device

This commit is contained in:
Chris Robinson
2017-06-29 15:59:16 -07:00
parent 00694826ef
commit d874b6bb27
+47 -2
View File
@@ -363,6 +363,19 @@ ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *devicename)
}
almtx_unlock(&EnumerationLock);
}
else
{
int i;
for(i = 0;i < DriverListSize;i++)
{
if(DriverList[i].ALCVer >= MAKE_ALC_VER(1, 1) ||
DriverList[i].alcIsExtensionPresent(NULL, "ALC_ENUMERATION_EXT"))
{
idx = i;
break;
}
}
}
device = DriverList[idx].alcOpenDevice(devicename);
if(device)
@@ -683,10 +696,29 @@ ALC_API const ALCchar* ALC_APIENTRY alcGetString(ALCdevice *device, ALCenum para
return CaptureDevicesList.Names;
case ALC_DEFAULT_DEVICE_SPECIFIER:
for(i = 0;i < DriverListSize;i++)
{
if(DriverList[i].ALCVer >= MAKE_ALC_VER(1, 1) ||
DriverList[i].alcIsExtensionPresent(NULL, "ALC_ENUMERATION_EXT"))
return DriverList[i].alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER);
}
return "";
case ALC_DEFAULT_ALL_DEVICES_SPECIFIER:
for(i = 0;i < DriverListSize;i++)
{
if(DriverList[i].alcIsExtensionPresent(NULL, "ALC_ENUMERATE_ALL_EXT"))
return DriverList[i].alcGetString(NULL, ALC_DEFAULT_ALL_DEVICES_SPECIFIER);
}
return "";
case ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER:
if(DriverListSize > 0)
return DriverList[0].alcGetString(NULL, param);
for(i = 0;i < DriverListSize;i++)
{
if(DriverList[i].ALCVer >= MAKE_ALC_VER(1, 1) ||
DriverList[i].alcIsExtensionPresent(NULL, "ALC_EXT_CAPTURE"))
return DriverList[i].alcGetString(NULL, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER);
}
return "";
default:
@@ -772,6 +804,19 @@ ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice(const ALCchar *devicename,
}
almtx_unlock(&EnumerationLock);
}
else
{
int i;
for(i = 0;i < DriverListSize;i++)
{
if(DriverList[i].ALCVer >= MAKE_ALC_VER(1, 1) ||
DriverList[i].alcIsExtensionPresent(NULL, "ALC_EXT_CAPTURE"))
{
idx = i;
break;
}
}
}
device = DriverList[idx].alcCaptureOpenDevice(devicename, frequency, format, buffersize);
if(device)