From d03e94ada84fb2db461abf629ce10f43d02cdd7b Mon Sep 17 00:00:00 2001 From: Matt Gajownik Date: Wed, 1 Jul 2020 17:22:09 +1000 Subject: [PATCH] events: Add support for audio_active, fix docs version --- src/WSEvents.cpp | 50 ++++++++++++++++++++++++++++++++ src/WSEvents.h | 2 ++ src/WSRequestHandler_Sources.cpp | 2 +- 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/WSEvents.cpp b/src/WSEvents.cpp index 50bea131..726ab883 100644 --- a/src/WSEvents.cpp +++ b/src/WSEvents.cpp @@ -271,6 +271,8 @@ void WSEvents::connectSourceSignals(obs_source_t* source) { signal_handler_connect(sh, "volume", OnSourceVolumeChange, this); signal_handler_connect(sh, "audio_sync", OnSourceAudioSyncOffsetChanged, this); signal_handler_connect(sh, "audio_mixers", OnSourceAudioMixersChanged, this); + signal_handler_connect(sh, "audio_activate", OnSourceAudioActivated, this); + signal_handler_connect(sh, "audio_deactivate", OnSourceAudioDeactivated, this); signal_handler_connect(sh, "filter_add", OnSourceFilterAdded, this); signal_handler_connect(sh, "filter_remove", OnSourceFilterRemoved, this); @@ -303,6 +305,8 @@ void WSEvents::disconnectSourceSignals(obs_source_t* source) { signal_handler_disconnect(sh, "volume", OnSourceVolumeChange, this); signal_handler_disconnect(sh, "audio_sync", OnSourceAudioSyncOffsetChanged, this); signal_handler_disconnect(sh, "audio_mixers", OnSourceAudioMixersChanged, this); + signal_handler_disconnect(sh, "audio_activate", OnSourceAudioActivated, this); + signal_handler_disconnect(sh, "audio_deactivate", OnSourceAudioDeactivated, this); signal_handler_disconnect(sh, "filter_add", OnSourceFilterAdded, this); signal_handler_disconnect(sh, "filter_remove", OnSourceFilterRemoved, this); @@ -1098,6 +1102,52 @@ void WSEvents::OnSourceMuteStateChange(void* param, calldata_t* data) { self->broadcastUpdate("SourceMuteStateChanged", fields); } +/** + * A source has removed audio. + * + * @return {String} `sourceName` Source name + * + * @api events + * @name SourceAudioDeactivated + * @category sources + * @since unreleased + */ +void WSEvents::OnSourceAudioDeactivated(void* param, calldata_t* data) { + auto self = reinterpret_cast(param); + + OBSSource source = calldata_get_pointer(data, "source"); + if (!source) { + return; + } + + OBSDataAutoRelease fields = obs_data_create(); + obs_data_set_string(fields, "sourceName", obs_source_get_name(source)); + self->broadcastUpdate("SourceAudioDeactivated", fields); +} + +/** + * A source has added audio. + * + * @return {String} `sourceName` Source name + * + * @api events + * @name SourceAudioActivated + * @category sources + * @since unreleased + */ +void WSEvents::OnSourceAudioActivated(void* param, calldata_t* data) { + auto self = reinterpret_cast(param); + + OBSSource source = calldata_get_pointer(data, "source"); + if (!source) { + return; + } + + OBSDataAutoRelease fields = obs_data_create(); + obs_data_set_string(fields, "sourceName", obs_source_get_name(source)); + self->broadcastUpdate("SourceAudioActivated", fields); +} + /** * The audio sync offset of a source has changed. * diff --git a/src/WSEvents.h b/src/WSEvents.h index 06ce7f2c..a7c3d24b 100644 --- a/src/WSEvents.h +++ b/src/WSEvents.h @@ -126,6 +126,8 @@ private: static void OnSourceMuteStateChange(void* param, calldata_t* data); static void OnSourceAudioSyncOffsetChanged(void* param, calldata_t* data); static void OnSourceAudioMixersChanged(void* param, calldata_t* data); + static void OnSourceAudioActivated(void* param, calldata_t* data); + static void OnSourceAudioDeactivated(void* param, calldata_t* data); static void OnSourceRename(void* param, calldata_t* data); diff --git a/src/WSRequestHandler_Sources.cpp b/src/WSRequestHandler_Sources.cpp index 6b1b2cec..30ba61a9 100644 --- a/src/WSRequestHandler_Sources.cpp +++ b/src/WSRequestHandler_Sources.cpp @@ -351,7 +351,7 @@ RpcResponse WSRequestHandler::ToggleMute(const RpcRequest& request) * @api requests * @name GetAudioActive * @category sources -* @since 4.9.0 +* @since unreleased */ RpcResponse WSRequestHandler::GetAudioActive(const RpcRequest& request) {