From f07d2cd6216b025d1b03d9d0f37164e597f64df3 Mon Sep 17 00:00:00 2001 From: cg2121 Date: Fri, 7 Jun 2024 22:47:28 -0500 Subject: [PATCH] UI: Use signal vector for advanced audio dialog Simplifies code by using a vector instead of individual signals. --- UI/adv-audio-control.cpp | 36 +++++++++++-------------- UI/adv-audio-control.hpp | 12 +-------- UI/window-basic-adv-audio.cpp | 50 +++++++++++++---------------------- UI/window-basic-adv-audio.hpp | 5 +--- 4 files changed, 36 insertions(+), 67 deletions(-) diff --git a/UI/adv-audio-control.cpp b/UI/adv-audio-control.cpp index 161534766..1acdecce1 100644 --- a/UI/adv-audio-control.cpp +++ b/UI/adv-audio-control.cpp @@ -51,28 +51,22 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_) mixer5 = new QCheckBox(); mixer6 = new QCheckBox(); - activateSignal.Connect(handler, "activate", OBSSourceActivated, this); - deactivateSignal.Connect(handler, "deactivate", OBSSourceDeactivated, - this); - audioActivateSignal.Connect(handler, "audio_activate", - OBSSourceActivated, this); - audioDeactivateSignal.Connect(handler, "audio_deactivate", - OBSSourceDeactivated, this); - volChangedSignal.Connect(handler, "volume", OBSSourceVolumeChanged, - this); - syncOffsetSignal.Connect(handler, "audio_sync", OBSSourceSyncChanged, - this); - flagsSignal.Connect(handler, "update_flags", OBSSourceFlagsChanged, - this); + sigs.emplace_back(handler, "activate", OBSSourceActivated, this); + sigs.emplace_back(handler, "deactivate", OBSSourceDeactivated, this); + sigs.emplace_back(handler, "audio_activate", OBSSourceActivated, this); + sigs.emplace_back(handler, "audio_deactivate", OBSSourceDeactivated, + this); + sigs.emplace_back(handler, "volume", OBSSourceVolumeChanged, this); + sigs.emplace_back(handler, "audio_sync", OBSSourceSyncChanged, this); + sigs.emplace_back(handler, "update_flags", OBSSourceFlagsChanged, this); if (obs_audio_monitoring_available()) - monitoringTypeSignal.Connect(handler, "audio_monitoring", - OBSSourceMonitoringTypeChanged, - this); - mixersSignal.Connect(handler, "audio_mixers", OBSSourceMixersChanged, - this); - balChangedSignal.Connect(handler, "audio_balance", - OBSSourceBalanceChanged, this); - renameSignal.Connect(handler, "rename", OBSSourceRenamed, this); + sigs.emplace_back(handler, "audio_monitoring", + OBSSourceMonitoringTypeChanged, this); + sigs.emplace_back(handler, "audio_mixers", OBSSourceMixersChanged, + this); + sigs.emplace_back(handler, "audio_balance", OBSSourceBalanceChanged, + this); + sigs.emplace_back(handler, "rename", OBSSourceRenamed, this); hlayout = new QHBoxLayout(); hlayout->setContentsMargins(0, 0, 0, 0); diff --git a/UI/adv-audio-control.hpp b/UI/adv-audio-control.hpp index ec88f1362..1d13e7c66 100644 --- a/UI/adv-audio-control.hpp +++ b/UI/adv-audio-control.hpp @@ -46,17 +46,7 @@ private: QPointer mixer5; QPointer mixer6; - OBSSignal volChangedSignal; - OBSSignal syncOffsetSignal; - OBSSignal flagsSignal; - OBSSignal monitoringTypeSignal; - OBSSignal mixersSignal; - OBSSignal activateSignal; - OBSSignal deactivateSignal; - OBSSignal audioActivateSignal; - OBSSignal audioDeactivateSignal; - OBSSignal balChangedSignal; - OBSSignal renameSignal; + std::vector sigs; static void OBSSourceActivated(void *param, calldata_t *calldata); static void OBSSourceDeactivated(void *param, calldata_t *calldata); diff --git a/UI/window-basic-adv-audio.cpp b/UI/window-basic-adv-audio.cpp index 9d80e29ff..cc3cb3aaf 100644 --- a/UI/window-basic-adv-audio.cpp +++ b/UI/window-basic-adv-audio.cpp @@ -12,19 +12,17 @@ Q_DECLARE_METATYPE(OBSSource); OBSBasicAdvAudio::OBSBasicAdvAudio(QWidget *parent) : QDialog(parent), ui(new Ui::OBSAdvAudio), - sourceAddedSignal(obs_get_signal_handler(), "source_audio_activate", - OBSSourceAdded, this), - sourceRemovedSignal(obs_get_signal_handler(), - "source_audio_deactivate", OBSSourceRemoved, - this), - sourceActivatedSignal(obs_get_signal_handler(), "source_activate", - OBSSourceActivated, this), - sourceDeactivatedSignal(obs_get_signal_handler(), "source_deactivate", - OBSSourceRemoved, this), showInactive(false) { ui->setupUi(this); + signal_handler_t *sh = obs_get_signal_handler(); + sigs.emplace_back(sh, "source_audio_activate", OBSSourceAdded, this); + sigs.emplace_back(sh, "source_audio_deactivate", OBSSourceRemoved, + this); + sigs.emplace_back(sh, "source_activate", OBSSourceActivated, this); + sigs.emplace_back(sh, "source_deactivate", OBSSourceRemoved, this); + VolumeType volType = (VolumeType)config_get_int( GetGlobalConfig(), "BasicWindow", "AdvAudioVolumeType"); @@ -158,35 +156,25 @@ void OBSBasicAdvAudio::SetShowInactive(bool show) showInactive = show; - sourceAddedSignal.Disconnect(); - sourceRemovedSignal.Disconnect(); - sourceActivatedSignal.Disconnect(); - sourceDeactivatedSignal.Disconnect(); + sigs.clear(); + signal_handler_t *sh = obs_get_signal_handler(); if (showInactive) { - sourceAddedSignal.Connect(obs_get_signal_handler(), - "source_create", OBSSourceAdded, - this); - sourceRemovedSignal.Connect(obs_get_signal_handler(), - "source_remove", OBSSourceRemoved, - this); + sigs.emplace_back(sh, "source_create", OBSSourceAdded, this); + sigs.emplace_back(sh, "source_remove", OBSSourceRemoved, this); obs_enum_sources(EnumSources, this); SetIconsVisible(showVisible); } else { - sourceAddedSignal.Connect(obs_get_signal_handler(), - "source_audio_activate", - OBSSourceAdded, this); - sourceRemovedSignal.Connect(obs_get_signal_handler(), - "source_audio_deactivate", - OBSSourceRemoved, this); - sourceActivatedSignal.Connect(obs_get_signal_handler(), - "source_activate", - OBSSourceActivated, this); - sourceDeactivatedSignal.Connect(obs_get_signal_handler(), - "source_deactivate", - OBSSourceRemoved, this); + sigs.emplace_back(sh, "source_audio_activate", OBSSourceAdded, + this); + sigs.emplace_back(sh, "source_audio_deactivate", + OBSSourceRemoved, this); + sigs.emplace_back(sh, "source_activate", OBSSourceActivated, + this); + sigs.emplace_back(sh, "source_deactivate", OBSSourceRemoved, + this); for (size_t i = 0; i < controls.size(); i++) { const auto source = controls[i]->GetSource(); diff --git a/UI/window-basic-adv-audio.hpp b/UI/window-basic-adv-audio.hpp index ab561a2da..28b6fa05b 100644 --- a/UI/window-basic-adv-audio.hpp +++ b/UI/window-basic-adv-audio.hpp @@ -14,10 +14,7 @@ class OBSBasicAdvAudio : public QDialog { Q_OBJECT private: - OBSSignal sourceAddedSignal; - OBSSignal sourceRemovedSignal; - OBSSignal sourceActivatedSignal; - OBSSignal sourceDeactivatedSignal; + std::vector sigs; bool showInactive; bool showVisible;