From 130d5a5202332b57b7d3f2e7528eb6c0da66f29d Mon Sep 17 00:00:00 2001 From: Carter Li Date: Fri, 27 Oct 2023 17:35:28 +0800 Subject: [PATCH] Sound (macOS): fix no sound devices detected error on old macOS version --- src/detection/sound/sound_apple.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/detection/sound/sound_apple.c b/src/detection/sound/sound_apple.c index 1d1962164..22ecec2ac 100644 --- a/src/detection/sound/sound_apple.c +++ b/src/detection/sound/sound_apple.c @@ -49,14 +49,23 @@ const char* ffDetectSound(FFlist* devices /* List of FFSoundDevice */) }, 0, NULL, &dataSize) == kAudioHardwareNoError && dataSize > 0) continue; - uint32_t connected; - dataSize = sizeof(connected); + uint32_t dataSource; + dataSize = sizeof(dataSource); if(AudioObjectGetPropertyData(deviceId, &(AudioObjectPropertyAddress){ - kAudioDevicePropertyJackIsConnected, + kAudioDevicePropertyDataSource, kAudioObjectPropertyScopeOutput, kAudioObjectPropertyElementMain - }, 0, NULL, &dataSize, &connected) == kAudioHardwareNoError) - if (!connected) continue; + }, 0, NULL, &dataSize, &dataSource) == kAudioHardwareNoError && dataSource == 'hdpn') + { + uint32_t connected; + dataSize = sizeof(connected); + if(AudioObjectGetPropertyData(deviceId, &(AudioObjectPropertyAddress){ + kAudioDevicePropertyJackIsConnected, + kAudioObjectPropertyScopeOutput, + kAudioObjectPropertyElementMain + }, 0, NULL, &dataSize, &connected) == kAudioHardwareNoError) + if (!connected) continue; + } FFSoundDevice* device = (FFSoundDevice*) ffListAdd(devices); device->main = deviceId == mainDeviceId;