diff --git a/libobs/obs-source.c b/libobs/obs-source.c index 219d71929..39198e3dd 100644 --- a/libobs/obs-source.c +++ b/libobs/obs-source.c @@ -88,6 +88,7 @@ static const char *source_signals[] = { "void update_flags(ptr source, int flags)", "void audio_sync(ptr source, int out int offset)", "void audio_mixers(ptr source, in out int mixers)", + "void audio_monitoring(ptr source, int type)", "void audio_activate(ptr source)", "void audio_deactivate(ptr source)", "void filter_add(ptr source, ptr filter)", @@ -5025,6 +5026,8 @@ void obs_source_remove_audio_capture_callback( void obs_source_set_monitoring_type(obs_source_t *source, enum obs_monitoring_type type) { + struct calldata data; + uint8_t stack[128]; bool was_on; bool now_on; @@ -5033,6 +5036,13 @@ void obs_source_set_monitoring_type(obs_source_t *source, if (source->monitoring_type == type) return; + calldata_init_fixed(&data, stack, sizeof(stack)); + calldata_set_ptr(&data, "source", source); + calldata_set_int(&data, "type", type); + + signal_handler_signal(source->context.signals, "audio_monitoring", + &data); + was_on = source->monitoring_type != OBS_MONITORING_TYPE_NONE; now_on = type != OBS_MONITORING_TYPE_NONE;