From d4ef5ef2d7e864ce15a450f9dd97aec2f842876e Mon Sep 17 00:00:00 2001 From: pkv Date: Mon, 8 Dec 2025 01:34:38 +0100 Subject: [PATCH] mac-capture: Add monitoring deduplication calls For 'coreaudio_output_capture', calls are added when devices are either changed, started or removed. The calls trigger a check against the monitoring device. Signed-off-by: pkv --- plugins/mac-capture/mac-audio.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/plugins/mac-capture/mac-audio.c b/plugins/mac-capture/mac-audio.c index 684016651..8d9dca997 100644 --- a/plugins/mac-capture/mac-audio.c +++ b/plugins/mac-capture/mac-audio.c @@ -784,6 +784,9 @@ static void coreaudio_destroy(void *data) if (ca) { coreaudio_shutdown(ca); + /* If the device is also used for monitoring, a cleanup is needed. */ + if (!ca->input) + obs_source_audio_output_capture_device_changed(ca->source, NULL); os_event_destroy(ca->exit_event); @@ -818,11 +821,15 @@ static void coreaudio_set_channels(struct coreaudio_data *ca, obs_data_t *settin static void coreaudio_update(void *data, obs_data_t *settings) { struct coreaudio_data *ca = data; + const char *new_id = obs_data_get_string(settings, "device_id"); + + if (!ca->input && strcmp(new_id, ca->device_uid) != 0) + obs_source_audio_output_capture_device_changed(ca->source, new_id); coreaudio_shutdown(ca); bfree(ca->device_uid); - ca->device_uid = bstrdup(obs_data_get_string(settings, "device_id")); + ca->device_uid = bstrdup(new_id); ca->enable_downmix = obs_data_get_bool(settings, "enable_downmix"); @@ -865,6 +872,9 @@ static void *coreaudio_create(obs_data_t *settings, obs_source_t *source, bool i ca->device_uid = bstrdup("default"); coreaudio_try_init(ca); + if (!ca->input) + obs_source_audio_output_capture_device_changed(source, ca->device_uid); + return ca; }