UI: Update adv audio props on monitoring type change

Update the audio monitoring combo box when it is changed via libobs.
Required to make obs-websocket requests work well
This commit is contained in:
tt2468 2021-08-31 06:26:52 -07:00 committed by Jim
parent c90b13f93e
commit 33b75a1a78
2 changed files with 25 additions and 0 deletions

View File

@ -60,6 +60,10 @@ OBSAdvAudioCtrl::OBSAdvAudioCtrl(QGridLayout *, obs_source_t *source_)
this);
flagsSignal.Connect(handler, "update_flags", OBSSourceFlagsChanged,
this);
if (obs_audio_monitoring_supported())
monitoringTypeSignal.Connect(handler, "audio_monitoring",
OBSSourceMonitoringTypeChanged,
this);
mixersSignal.Connect(handler, "audio_mixers", OBSSourceMixersChanged,
this);
@ -330,6 +334,15 @@ void OBSAdvAudioCtrl::OBSSourceSyncChanged(void *param, calldata_t *calldata)
"SourceSyncChanged", Q_ARG(int64_t, offset));
}
void OBSAdvAudioCtrl::OBSSourceMonitoringTypeChanged(void *param,
calldata_t *calldata)
{
int type = calldata_int(calldata, "type");
QMetaObject::invokeMethod(reinterpret_cast<OBSAdvAudioCtrl *>(param),
"SourceMonitoringTypeChanged",
Q_ARG(int, type));
}
void OBSAdvAudioCtrl::OBSSourceMixersChanged(void *param, calldata_t *calldata)
{
uint32_t mixers = (uint32_t)calldata_int(calldata, "mixers");
@ -382,6 +395,14 @@ void OBSAdvAudioCtrl::SourceSyncChanged(int64_t offset)
syncOffset->blockSignals(false);
}
void OBSAdvAudioCtrl::SourceMonitoringTypeChanged(int type)
{
int idx = monitoringType->findData(type);
monitoringType->blockSignals(true);
monitoringType->setCurrentIndex(idx);
monitoringType->blockSignals(false);
}
void OBSAdvAudioCtrl::SourceMixersChanged(uint32_t mixers)
{
setCheckboxState(mixer1, mixers & (1 << 0));

View File

@ -51,6 +51,7 @@ private:
OBSSignal volChangedSignal;
OBSSignal syncOffsetSignal;
OBSSignal flagsSignal;
OBSSignal monitoringTypeSignal;
OBSSignal mixersSignal;
OBSSignal activateSignal;
OBSSignal deactivateSignal;
@ -60,6 +61,8 @@ private:
static void OBSSourceFlagsChanged(void *param, calldata_t *calldata);
static void OBSSourceVolumeChanged(void *param, calldata_t *calldata);
static void OBSSourceSyncChanged(void *param, calldata_t *calldata);
static void OBSSourceMonitoringTypeChanged(void *param,
calldata_t *calldata);
static void OBSSourceMixersChanged(void *param, calldata_t *calldata);
public:
@ -77,6 +80,7 @@ public slots:
void SourceFlagsChanged(uint32_t flags);
void SourceVolumeChanged(float volume);
void SourceSyncChanged(int64_t offset);
void SourceMonitoringTypeChanged(int type);
void SourceMixersChanged(uint32_t mixers);
void volumeChanged(double db);