From 94cab1e5369e0a900c64f0a477e290e538bd1be6 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Thu, 19 Sep 2019 23:38:53 -0700 Subject: [PATCH] UI: Hide mixer sources if audio deactivated If audio is determined to be deactivated via the audio source (via the new "audio_activate" and "audio_deactivate" signals), hide the audio source in the mixer. --- UI/window-basic-main.cpp | 26 ++++++++++++++++++++++++++ UI/window-basic-main.hpp | 2 ++ 2 files changed, 28 insertions(+) diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index bd2cf358c..712c41e63 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -1411,6 +1411,12 @@ void OBSBasic::InitOBSCallbacks() signalHandlers.emplace_back(obs_get_signal_handler(), "source_deactivate", OBSBasic::SourceDeactivated, this); + signalHandlers.emplace_back(obs_get_signal_handler(), + "source_audio_activate", + OBSBasic::SourceAudioActivated, this); + signalHandlers.emplace_back(obs_get_signal_handler(), + "source_audio_deactivate", + OBSBasic::SourceAudioDeactivated, this); signalHandlers.emplace_back(obs_get_signal_handler(), "source_rename", OBSBasic::SourceRenamed, this); } @@ -2961,6 +2967,8 @@ void OBSBasic::ActivateAudioSource(OBSSource source) { if (SourceMixerHidden(source)) return; + if (!obs_source_audio_active(source)) + return; bool vertical = config_get_bool(GetGlobalConfig(), "BasicWindow", "VerticalVolControl"); @@ -3282,6 +3290,24 @@ void OBSBasic::SourceDeactivated(void *data, calldata_t *params) Q_ARG(OBSSource, OBSSource(source))); } +void OBSBasic::SourceAudioActivated(void *data, calldata_t *params) +{ + obs_source_t *source = (obs_source_t *)calldata_ptr(params, "source"); + + if (obs_source_active(source)) + QMetaObject::invokeMethod(static_cast(data), + "ActivateAudioSource", + Q_ARG(OBSSource, OBSSource(source))); +} + +void OBSBasic::SourceAudioDeactivated(void *data, calldata_t *params) +{ + obs_source_t *source = (obs_source_t *)calldata_ptr(params, "source"); + QMetaObject::invokeMethod(static_cast(data), + "DeactivateAudioSource", + Q_ARG(OBSSource, OBSSource(source))); +} + void OBSBasic::SourceRenamed(void *data, calldata_t *params) { obs_source_t *source = (obs_source_t *)calldata_ptr(params, "source"); diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp index 9f7171a13..a75eb4723 100644 --- a/UI/window-basic-main.hpp +++ b/UI/window-basic-main.hpp @@ -570,6 +570,8 @@ private: static void SourceRemoved(void *data, calldata_t *params); static void SourceActivated(void *data, calldata_t *params); static void SourceDeactivated(void *data, calldata_t *params); + static void SourceAudioActivated(void *data, calldata_t *params); + static void SourceAudioDeactivated(void *data, calldata_t *params); static void SourceRenamed(void *data, calldata_t *params); static void RenderMain(void *data, uint32_t cx, uint32_t cy);