Skip to content

Commit b4a09e8

Browse files
committed
Fix coreaudio module not detecting changes of the default audio device.
1 parent fb23636 commit b4a09e8

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/coreaudio.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,12 +139,15 @@ static void destroy_ca(struct SoundIoPrivate *si) {
139139
struct SoundIoCoreAudio *sica = &si->backend_data.coreaudio;
140140

141141
AudioObjectPropertyAddress prop_address = {
142-
kAudioHardwarePropertyDevices,
142+
kAudioHardwarePropertyDefaultOutputDevice,
143143
kAudioObjectPropertyScopeGlobal,
144144
kAudioObjectPropertyElementMaster
145145
};
146146
AudioObjectRemovePropertyListener(kAudioObjectSystemObject, &prop_address, on_devices_changed, si);
147147

148+
prop_address.mSelector = kAudioHardwarePropertyDefaultInputDevice;
149+
AudioObjectRemovePropertyListener(kAudioObjectSystemObject, &prop_address, on_devices_changed, si);
150+
148151
prop_address.mSelector = kAudioHardwarePropertyServiceRestarted;
149152
AudioObjectRemovePropertyListener(kAudioObjectSystemObject, &prop_address, on_service_restarted, si);
150153

@@ -1435,7 +1438,7 @@ int soundio_coreaudio_init(struct SoundIoPrivate *si) {
14351438
}
14361439

14371440
AudioObjectPropertyAddress prop_address = {
1438-
kAudioHardwarePropertyDevices,
1441+
kAudioHardwarePropertyDefaultOutputDevice,
14391442
kAudioObjectPropertyScopeGlobal,
14401443
kAudioObjectPropertyElementMaster
14411444
};
@@ -1446,6 +1449,14 @@ int soundio_coreaudio_init(struct SoundIoPrivate *si) {
14461449
return SoundIoErrorSystemResources;
14471450
}
14481451

1452+
prop_address.mSelector = kAudioHardwarePropertyDefaultInputDevice;
1453+
if ((err = AudioObjectAddPropertyListener(kAudioObjectSystemObject, &prop_address,
1454+
on_devices_changed, si)))
1455+
{
1456+
destroy_ca(si);
1457+
return SoundIoErrorSystemResources;
1458+
}
1459+
14491460
prop_address.mSelector = kAudioHardwarePropertyServiceRestarted;
14501461
if ((err = AudioObjectAddPropertyListener(kAudioObjectSystemObject, &prop_address,
14511462
on_service_restarted, si)))

0 commit comments

Comments
 (0)