@@ -139,12 +139,15 @@ static void destroy_ca(struct SoundIoPrivate *si) {
139
139
struct SoundIoCoreAudio * sica = & si -> backend_data .coreaudio ;
140
140
141
141
AudioObjectPropertyAddress prop_address = {
142
- kAudioHardwarePropertyDevices ,
142
+ kAudioHardwarePropertyDefaultOutputDevice ,
143
143
kAudioObjectPropertyScopeGlobal ,
144
144
kAudioObjectPropertyElementMaster
145
145
};
146
146
AudioObjectRemovePropertyListener (kAudioObjectSystemObject , & prop_address , on_devices_changed , si );
147
147
148
+ prop_address .mSelector = kAudioHardwarePropertyDefaultInputDevice ;
149
+ AudioObjectRemovePropertyListener (kAudioObjectSystemObject , & prop_address , on_devices_changed , si );
150
+
148
151
prop_address .mSelector = kAudioHardwarePropertyServiceRestarted ;
149
152
AudioObjectRemovePropertyListener (kAudioObjectSystemObject , & prop_address , on_service_restarted , si );
150
153
@@ -1435,7 +1438,7 @@ int soundio_coreaudio_init(struct SoundIoPrivate *si) {
1435
1438
}
1436
1439
1437
1440
AudioObjectPropertyAddress prop_address = {
1438
- kAudioHardwarePropertyDevices ,
1441
+ kAudioHardwarePropertyDefaultOutputDevice ,
1439
1442
kAudioObjectPropertyScopeGlobal ,
1440
1443
kAudioObjectPropertyElementMaster
1441
1444
};
@@ -1446,6 +1449,14 @@ int soundio_coreaudio_init(struct SoundIoPrivate *si) {
1446
1449
return SoundIoErrorSystemResources ;
1447
1450
}
1448
1451
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
+
1449
1460
prop_address .mSelector = kAudioHardwarePropertyServiceRestarted ;
1450
1461
if ((err = AudioObjectAddPropertyListener (kAudioObjectSystemObject , & prop_address ,
1451
1462
on_service_restarted , si )))
0 commit comments