UI: Fix bug with audio balance slider not updating

Fixes #4763.
This commit is contained in:
Kasin Sparks
2021-09-30 20:24:58 -04:00
committed by Jim
parent 3ccc963e53
commit 67d2b50a91
4 changed files with 36 additions and 3 deletions

View File

@@ -66,6 +66,8 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_)
this);
mixersSignal.Connect(handler, "audio_mixers", OBSSourceMixersChanged,
this);
balChangedSignal.Connect(handler, "audio_balance",
OBSSourceBalanceChanged, this);
hlayout = new QHBoxLayout();
hlayout->setContentsMargins(0, 0, 0, 0);
@@ -351,6 +353,13 @@ void OBSAdvAudioCtrl::OBSSourceMixersChanged(void *param, calldata_t *calldata)
Q_ARG(uint32_t, mixers));
}
void OBSAdvAudioCtrl::OBSSourceBalanceChanged(void *param, calldata_t *calldata)
{
int balance = (float)calldata_float(calldata, "balance") * 100.0f;
QMetaObject::invokeMethod(reinterpret_cast<OBSAdvAudioCtrl *>(param),
"SourceBalanceChanged", Q_ARG(int, balance));
}
/* ------------------------------------------------------------------------- */
/* Qt event queue source callbacks */
@@ -388,6 +397,13 @@ void OBSAdvAudioCtrl::SourceVolumeChanged(float value)
volume->blockSignals(false);
}
void OBSAdvAudioCtrl::SourceBalanceChanged(int value)
{
balance->blockSignals(true);
balance->setValue(value);
balance->blockSignals(false);
}
void OBSAdvAudioCtrl::SourceSyncChanged(int64_t offset)
{
syncOffset->blockSignals(true);

View File

@@ -55,6 +55,7 @@ private:
OBSSignal mixersSignal;
OBSSignal activateSignal;
OBSSignal deactivateSignal;
OBSSignal balChangedSignal;
static void OBSSourceActivated(void *param, calldata_t *calldata);
static void OBSSourceDeactivated(void *param, calldata_t *calldata);
@@ -64,6 +65,7 @@ private:
static void OBSSourceMonitoringTypeChanged(void *param,
calldata_t *calldata);
static void OBSSourceMixersChanged(void *param, calldata_t *calldata);
static void OBSSourceBalanceChanged(void *param, calldata_t *calldata);
public:
OBSAdvAudioCtrl(QGridLayout *layout, obs_source_t *source_);
@@ -82,6 +84,7 @@ public slots:
void SourceSyncChanged(int64_t offset);
void SourceMonitoringTypeChanged(int type);
void SourceMixersChanged(uint32_t mixers);
void SourceBalanceChanged(int balance);
void volumeChanged(double db);
void percentChanged(int percent);