Merge pull request #601 from Ragora/bugfix-audio-devices

* BugFix: Fix AL device listing
This commit is contained in:
Brian Roberts 2021-10-03 17:08:15 -05:00 committed by GitHub
commit dc9899907b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -55,9 +55,20 @@ ALDeviceList::ALDeviceList( const OPENALFNTABLE &oalft )
defaultDeviceIndex = 0; defaultDeviceIndex = 0;
// grab function pointers for 1.0-API functions, and if successful proceed to enumerate all devices // grab function pointers for 1.0-API functions, and if successful proceed to enumerate all devices
if (ALFunction.alcIsExtensionPresent(NULL, "ALC_ENUMERATION_EXT")) { const bool enumerationExtensionPresent = ALFunction.alcIsExtensionPresent(NULL, "ALC_ENUMERATION_EXT");
devices = (char *)ALFunction.alcGetString(NULL, ALC_DEVICE_SPECIFIER); const bool enumerateAllExtensionPresent = ALFunction.alcIsExtensionPresent(NULL, "ALC_ENUMERATE_ALL_EXT");
defaultDeviceName = (char *)ALFunction.alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER); if (enumerateAllExtensionPresent || enumerationExtensionPresent) {
if (enumerateAllExtensionPresent)
{
devices = (char *)ALFunction.alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER);
defaultDeviceName = (char *)ALFunction.alcGetString(NULL, ALC_DEFAULT_ALL_DEVICES_SPECIFIER);
}
else
{
devices = (char *)ALFunction.alcGetString(NULL, ALC_DEVICE_SPECIFIER);
defaultDeviceName = (char *)ALFunction.alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER);
}
index = 0; index = 0;
// go through device list (each device terminated with a single NULL, list terminated with double NULL) // go through device list (each device terminated with a single NULL, list terminated with double NULL)
while (*devices != 0) { while (*devices != 0) {
@ -70,7 +81,7 @@ ALDeviceList::ALDeviceList( const OPENALFNTABLE &oalft )
if (context) { if (context) {
ALFunction.alcMakeContextCurrent(context); ALFunction.alcMakeContextCurrent(context);
// if new actual device name isn't already in the list, then add it... // if new actual device name isn't already in the list, then add it...
actualDeviceName = ALFunction.alcGetString(device, ALC_DEVICE_SPECIFIER); actualDeviceName = devices;
bool bNewName = true; bool bNewName = true;
for (int i = 0; i < GetNumDevices(); i++) { for (int i = 0; i < GetNumDevices(); i++) {
if (String::compare(GetDeviceName(i), actualDeviceName) == 0) { if (String::compare(GetDeviceName(i), actualDeviceName) == 0) {
@ -313,4 +324,4 @@ unsigned int ALDeviceList::GetMaxNumSources()
} }
return iSourceCount; return iSourceCount;
} }