浏览代码

UI: Add rename signal to adv audio dialog

The names wouldn't be updated in the advanced audio dialog
when the source is renamed.
cg2121 3 年之前
父节点
当前提交
8dc91ce5e1
共有 2 个文件被更改,包括 20 次插入1 次删除
  1. 17 1
      UI/adv-audio-control.cpp
  2. 3 0
      UI/adv-audio-control.hpp

+ 17 - 1
UI/adv-audio-control.cpp

@@ -68,6 +68,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_)
 			     this);
 	balChangedSignal.Connect(handler, "audio_balance",
 				 OBSSourceBalanceChanged, this);
+	renameSignal.Connect(handler, "rename", OBSSourceRenamed, this);
 
 	hlayout = new QHBoxLayout();
 	hlayout->setContentsMargins(0, 0, 0, 0);
@@ -95,7 +96,7 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_)
 	iconLabel->setFixedSize(16, 16);
 	iconLabel->setStyleSheet("background: none");
 
-	nameLabel->setText(sourceName);
+	SetSourceName(sourceName);
 	nameLabel->setAlignment(Qt::AlignVCenter);
 
 	bool isActive = obs_source_active(source);
@@ -360,6 +361,15 @@ void OBSAdvAudioCtrl::OBSSourceBalanceChanged(void *param, calldata_t *calldata)
 				  "SourceBalanceChanged", Q_ARG(int, balance));
 }
 
+void OBSAdvAudioCtrl::OBSSourceRenamed(void *param, calldata_t *calldata)
+{
+	QString newName = QT_UTF8(calldata_string(calldata, "new_name"));
+
+	QMetaObject::invokeMethod(reinterpret_cast<OBSAdvAudioCtrl *>(param),
+				  "SetSourceName",
+				  Q_ARG(const QString &, newName));
+}
+
 /* ------------------------------------------------------------------------- */
 /* Qt event queue source callbacks */
 
@@ -689,3 +699,9 @@ void OBSAdvAudioCtrl::SetIconVisible(bool visible)
 {
 	visible ? iconLabel->show() : iconLabel->hide();
 }
+
+void OBSAdvAudioCtrl::SetSourceName(const QString &newName)
+{
+	if (nameLabel->text() != newName)
+		nameLabel->setText(newName);
+}

+ 3 - 0
UI/adv-audio-control.hpp

@@ -56,6 +56,7 @@ private:
 	OBSSignal activateSignal;
 	OBSSignal deactivateSignal;
 	OBSSignal balChangedSignal;
+	OBSSignal renameSignal;
 
 	static void OBSSourceActivated(void *param, calldata_t *calldata);
 	static void OBSSourceDeactivated(void *param, calldata_t *calldata);
@@ -66,6 +67,7 @@ private:
 						   calldata_t *calldata);
 	static void OBSSourceMixersChanged(void *param, calldata_t *calldata);
 	static void OBSSourceBalanceChanged(void *param, calldata_t *calldata);
+	static void OBSSourceRenamed(void *param, calldata_t *calldata);
 
 public:
 	OBSAdvAudioCtrl(QGridLayout *layout, obs_source_t *source_);
@@ -85,6 +87,7 @@ public slots:
 	void SourceMonitoringTypeChanged(int type);
 	void SourceMixersChanged(uint32_t mixers);
 	void SourceBalanceChanged(int balance);
+	void SetSourceName(const QString &newNamw);
 
 	void volumeChanged(double db);
 	void percentChanged(int percent);