Просмотр исходного кода

UI: Set checkbox value without signaling

Instead of comparing the value of the checkbox to prevent recursive
signaling, just disable its ability to signal.
jp9000 11 лет назад
Родитель
Сommit
73d538102b
1 измененных файлов с 8 добавлено и 3 удалено
  1. 8 3
      obs/adv-audio-control.cpp

+ 8 - 3
obs/adv-audio-control.cpp

@@ -170,12 +170,17 @@ void OBSAdvAudioCtrl::OBSSourceSyncChanged(void *param, calldata_t *calldata)
 /* ------------------------------------------------------------------------- */
 /* Qt event queue source callbacks */
 
+static inline void setCheckboxState(QCheckBox *checkbox, bool checked)
+{
+	checkbox->blockSignals(true);
+	checkbox->setChecked(checked);
+	checkbox->blockSignals(false);
+}
+
 void OBSAdvAudioCtrl::SourceFlagsChanged(uint32_t flags)
 {
 	bool forceMonoVal = (flags & OBS_SOURCE_FLAG_FORCE_MONO) != 0;
-
-	if (forceMono->isChecked() != forceMonoVal)
-		forceMono->setChecked(forceMonoVal);
+	setCheckboxState(forceMono, forceMonoVal);
 }
 
 void OBSAdvAudioCtrl::SourceVolumeChanged(float value)