aboutsummaryrefslogtreecommitdiffstats
path: root/utils/openal-info.c
diff options
context:
space:
mode:
authorMathiusD <[email protected]>2023-11-26 03:33:00 +0100
committerGitHub <[email protected]>2023-11-26 02:33:00 +0000
commitc03603b58d4cf6a25d36bca00305970bc9f163b4 (patch)
tree5f6f2944daf11a43779e8a483c749b190d11fc55 /utils/openal-info.c
parent1f6d19fd4a4fec15da4181a40ed443174bb95384 (diff)
Add query fonction in ALC_SOFT_system_events unreleased extension (#938)
* feat(ALC_SOFT_system_events): Add alcEventIsSupportedSOFT method in ALC_SOFT_system_events unreleased extension The purpose of this addition (to my collection) are allow to retrieve which events are supported and if events are fully supported or if some case isn't managed for some reason For exemple only some backends provide system events: * pipewire -> Full support of extension * wasapi -> Full support of extension * pulseaudio -> Support of add and remove devices events only * coreaudio -> Support of default device change only * feat(ALC_SOFT_system_events): Fix typo in alext.h Cf following review : https://github.com/kcat/openal-soft/pull/938#discussion_r1404509828 * feat(ALC_SOFT_system_events): Remove ALC_EVENT_NOT_SUPPORTED_SOFT token Cf following discussions between this comment : https://github.com/kcat/openal-soft/pull/938#issuecomment-1825876452 to this comment : https://github.com/kcat/openal-soft/pull/938#issuecomment-1826419406
Diffstat (limited to 'utils/openal-info.c')
-rw-r--r--utils/openal-info.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/utils/openal-info.c b/utils/openal-info.c
index 0af27422..11c49245 100644
--- a/utils/openal-info.c
+++ b/utils/openal-info.c
@@ -230,6 +230,56 @@ static void printModeInfo(ALCdevice *device)
}
}
+static void printALCSOFTSystemEventIsSupportedResult(LPALCEVENTISSUPPORTEDSOFT alcEventIsSupportedSOFT, ALCenum eventType, ALCenum deviceType)
+{
+ if (alcEventIsSupportedSOFT == NULL)
+ {
+ printf("ERROR (alcEventIsSupportedSOFT missing)\n");
+ return;
+ }
+ ALCenum supported = alcEventIsSupportedSOFT(eventType, deviceType);
+ if (supported == ALC_EVENT_SUPPORTED_SOFT)
+ {
+ printf("SUPPORTED\n");
+ }
+ else if (supported == ALC_EVENT_NOT_SUPPORTED_SOFT)
+ {
+ printf("NOT SUPPORTED\n");
+ }
+ else
+ {
+ printf("UNEXPECTED VALUE : %d\n", supported);
+ }
+}
+
+static void printALC_SOFT_system_event(void)
+{
+ printf("ALC_SOFT_system_events:");
+ if (alcIsExtensionPresent(NULL, "ALC_SOFT_system_events"))
+ {
+ static LPALCEVENTISSUPPORTEDSOFT alcEventIsSupportedSOFT;
+ alcEventIsSupportedSOFT = FUNCTION_CAST(LPALCEVENTISSUPPORTEDSOFT, alGetProcAddress("alcEventIsSupportedSOFT"));
+ printf(" Supported.\n");
+ printf(" Events:\n");
+ printf(" ALC_EVENT_TYPE_DEFAULT_DEVICE_CHANGED_SOFT for ALC_PLAYBACK_DEVICE_SOFT - ");
+ printALCSOFTSystemEventIsSupportedResult(alcEventIsSupportedSOFT, ALC_EVENT_TYPE_DEFAULT_DEVICE_CHANGED_SOFT, ALC_PLAYBACK_DEVICE_SOFT);
+ printf(" ALC_EVENT_TYPE_DEFAULT_DEVICE_CHANGED_SOFT for ALC_CAPTURE_DEVICE_SOFT - ");
+ printALCSOFTSystemEventIsSupportedResult(alcEventIsSupportedSOFT, ALC_EVENT_TYPE_DEFAULT_DEVICE_CHANGED_SOFT, ALC_CAPTURE_DEVICE_SOFT);
+ printf(" ALC_EVENT_TYPE_DEVICE_ADDED_SOFT for ALC_PLAYBACK_DEVICE_SOFT - ");
+ printALCSOFTSystemEventIsSupportedResult(alcEventIsSupportedSOFT, ALC_EVENT_TYPE_DEVICE_ADDED_SOFT, ALC_PLAYBACK_DEVICE_SOFT);
+ printf(" ALC_EVENT_TYPE_DEVICE_ADDED_SOFT for ALC_CAPTURE_DEVICE_SOFT - ");
+ printALCSOFTSystemEventIsSupportedResult(alcEventIsSupportedSOFT, ALC_EVENT_TYPE_DEVICE_ADDED_SOFT, ALC_CAPTURE_DEVICE_SOFT);
+ printf(" ALC_EVENT_TYPE_DEVICE_REMOVED_SOFT for ALC_PLAYBACK_DEVICE_SOFT - ");
+ printALCSOFTSystemEventIsSupportedResult(alcEventIsSupportedSOFT, ALC_EVENT_TYPE_DEVICE_REMOVED_SOFT, ALC_PLAYBACK_DEVICE_SOFT);
+ printf(" ALC_EVENT_TYPE_DEVICE_REMOVED_SOFT for ALC_CAPTURE_DEVICE_SOFT - ");
+ printALCSOFTSystemEventIsSupportedResult(alcEventIsSupportedSOFT, ALC_EVENT_TYPE_DEVICE_REMOVED_SOFT, ALC_CAPTURE_DEVICE_SOFT);
+ }
+ else
+ {
+ printf(" Not supported.\n");
+ }
+}
+
static void printALInfo(void)
{
printf("OpenAL vendor string: %s\n", alGetString(AL_VENDOR));
@@ -435,6 +485,7 @@ int main(int argc, char *argv[])
}
printALCInfo(device);
printHRTFInfo(device);
+ printALC_SOFT_system_event();
context = alcCreateContext(device, NULL);
if(!context || alcMakeContextCurrent(context) == ALC_FALSE)