From b0e3374923399486380c014035f33ad25b713ce6 Mon Sep 17 00:00:00 2001 From: Mike Dickey Date: Wed, 10 Jan 2024 15:52:37 -0800 Subject: [PATCH] Remove CoreAudio device disconnect listener when closing input mode streams The flag handle->disconnectListenerAdded[0] is never set to true for input mode streams because the probeOpenStream() code uses handle->disconnectListenerAdded[mode]. This causes RtAudio to never remove device disconnect listeners, which can cause the listener slots to fill up and an "illegal instruction" error code to be returned when you try to add a new one. --- RtAudio.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RtAudio.cpp b/RtAudio.cpp index 0a55be12..bbe25399 100644 --- a/RtAudio.cpp +++ b/RtAudio.cpp @@ -1981,7 +1981,7 @@ void RtApiCore :: closeStream( void ) } } - if ( handle->disconnectListenerAdded[0] ) { + if ( handle->disconnectListenerAdded[1] ) { property.mSelector = kAudioDevicePropertyDeviceIsAlive; if (AudioObjectRemovePropertyListener( handle->id[1], &property, streamDisconnectListener, (void *) &stream_.callbackInfo ) != noErr) { errorText_ = "RtApiCore::closeStream(): error removing disconnect property listener!";