浏览代码

UI: Use signal vector for advanced audio dialog

Simplifies code by using a vector instead of individual signals.
cg2121 1 年之前
父节点
当前提交
f07d2cd621
共有 4 个文件被更改,包括 36 次插入67 次删除
  1. 15 21
      UI/adv-audio-control.cpp
  2. 1 11
      UI/adv-audio-control.hpp
  3. 19 31
      UI/window-basic-adv-audio.cpp
  4. 1 4
      UI/window-basic-adv-audio.hpp

+ 15 - 21
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);

+ 1 - 11
UI/adv-audio-control.hpp

@@ -46,17 +46,7 @@ private:
 	QPointer<QCheckBox> mixer5;
 	QPointer<QCheckBox> 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<OBSSignal> sigs;
 
 	static void OBSSourceActivated(void *param, calldata_t *calldata);
 	static void OBSSourceDeactivated(void *param, calldata_t *calldata);

+ 19 - 31
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();

+ 1 - 4
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<OBSSignal> sigs;
 	bool showInactive;
 	bool showVisible;