From 33b75a1a78a2fc14d0aec5c9d07b4455482e29b0 Mon Sep 17 00:00:00 2001 From: tt2468 Date: Tue, 31 Aug 2021 06:26:52 -0700 Subject: [PATCH] UI: Update adv audio props on monitoring type change Update the audio monitoring combo box when it is changed via libobs. Required to make obs-websocket requests work well --- UI/adv-audio-control.cpp | 21 +++++++++++++++++++++ UI/adv-audio-control.hpp | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/UI/adv-audio-control.cpp b/UI/adv-audio-control.cpp index cb0e8a61c..edba2cc28 100644 --- a/UI/adv-audio-control.cpp +++ b/UI/adv-audio-control.cpp @@ -60,6 +60,10 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_) this); flagsSignal.Connect(handler, "update_flags", OBSSourceFlagsChanged, this); + if (obs_audio_monitoring_supported()) + monitoringTypeSignal.Connect(handler, "audio_monitoring", + OBSSourceMonitoringTypeChanged, + this); mixersSignal.Connect(handler, "audio_mixers", OBSSourceMixersChanged, this); @@ -330,6 +334,15 @@ void OBSAdvAudioCtrl::OBSSourceSyncChanged(void *param, calldata_t *calldata) "SourceSyncChanged", Q_ARG(int64_t, offset)); } +void OBSAdvAudioCtrl::OBSSourceMonitoringTypeChanged(void *param, + calldata_t *calldata) +{ + int type = calldata_int(calldata, "type"); + QMetaObject::invokeMethod(reinterpret_cast(param), + "SourceMonitoringTypeChanged", + Q_ARG(int, type)); +} + void OBSAdvAudioCtrl::OBSSourceMixersChanged(void *param, calldata_t *calldata) { uint32_t mixers = (uint32_t)calldata_int(calldata, "mixers"); @@ -382,6 +395,14 @@ void OBSAdvAudioCtrl::SourceSyncChanged(int64_t offset) syncOffset->blockSignals(false); } +void OBSAdvAudioCtrl::SourceMonitoringTypeChanged(int type) +{ + int idx = monitoringType->findData(type); + monitoringType->blockSignals(true); + monitoringType->setCurrentIndex(idx); + monitoringType->blockSignals(false); +} + void OBSAdvAudioCtrl::SourceMixersChanged(uint32_t mixers) { setCheckboxState(mixer1, mixers & (1 << 0)); diff --git a/UI/adv-audio-control.hpp b/UI/adv-audio-control.hpp index 9a7cf07a9..2de04148f 100644 --- a/UI/adv-audio-control.hpp +++ b/UI/adv-audio-control.hpp @@ -51,6 +51,7 @@ private: OBSSignal volChangedSignal; OBSSignal syncOffsetSignal; OBSSignal flagsSignal; + OBSSignal monitoringTypeSignal; OBSSignal mixersSignal; OBSSignal activateSignal; OBSSignal deactivateSignal; @@ -60,6 +61,8 @@ private: static void OBSSourceFlagsChanged(void *param, calldata_t *calldata); static void OBSSourceVolumeChanged(void *param, calldata_t *calldata); static void OBSSourceSyncChanged(void *param, calldata_t *calldata); + static void OBSSourceMonitoringTypeChanged(void *param, + calldata_t *calldata); static void OBSSourceMixersChanged(void *param, calldata_t *calldata); public: @@ -77,6 +80,7 @@ public slots: void SourceFlagsChanged(uint32_t flags); void SourceVolumeChanged(float volume); void SourceSyncChanged(int64_t offset); + void SourceMonitoringTypeChanged(int type); void SourceMixersChanged(uint32_t mixers); void volumeChanged(double db);