From bba029e9012e0359a15011e2872972f9621a4949 Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Sat, 24 Dec 2022 00:02:35 +0100 Subject: [PATCH] Only show audio monitoring options if monitoring is supported by OBS --- src/macro-core/macro-action-audio.cpp | 20 +++++++++++++++----- src/macro-core/macro-condition-audio.cpp | 20 +++++++++++++++----- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/macro-core/macro-action-audio.cpp b/src/macro-core/macro-action-audio.cpp index d24a7767..1aa79321 100644 --- a/src/macro-core/macro-action-audio.cpp +++ b/src/macro-core/macro-action-audio.cpp @@ -277,8 +277,16 @@ std::string MacroActionAudio::GetShortDesc() const static inline void populateActionSelection(QComboBox *list) { - for (auto entry : actionTypes) { - list->addItem(obs_module_text(entry.second.c_str())); + for (const auto [action, name] : actionTypes) { + if (action == MacroActionAudio::Action::MONITOR) { + if (obs_audio_monitoring_available()) { + list->addItem(obs_module_text(name.c_str()), + static_cast(action)); + } + } else { + list->addItem(obs_module_text(name.c_str()), + static_cast(action)); + } } } @@ -448,7 +456,8 @@ void MacroActionAudioEdit::UpdateEntryData() _audioSources->setCurrentText( GetWeakSourceName(_entryData->_audioSource).c_str()); - _actions->setCurrentIndex(static_cast(_entryData->_action)); + _actions->setCurrentIndex( + _actions->findData(static_cast(_entryData->_action))); _syncOffset->setValue(_entryData->_syncOffset); _monitorTypes->setCurrentIndex(_entryData->_monitorType); _volumePercent->setValue(_entryData->_volume); @@ -473,14 +482,15 @@ void MacroActionAudioEdit::SourceChanged(const QString &text) QString::fromStdString(_entryData->GetShortDesc())); } -void MacroActionAudioEdit::ActionChanged(int value) +void MacroActionAudioEdit::ActionChanged(int idx) { if (_loading || !_entryData) { return; } std::lock_guard lock(switcher->m); - _entryData->_action = static_cast(value); + _entryData->_action = static_cast( + _actions->itemData(idx).toInt()); SetWidgetVisibility(); } diff --git a/src/macro-core/macro-condition-audio.cpp b/src/macro-core/macro-condition-audio.cpp index 1d2f8de5..93b06b73 100644 --- a/src/macro-core/macro-condition-audio.cpp +++ b/src/macro-core/macro-condition-audio.cpp @@ -235,8 +235,16 @@ void MacroConditionAudio::ResetVolmeter() static inline void populateCheckTypes(QComboBox *list) { list->clear(); - for (auto entry : checkTypes) { - list->addItem(obs_module_text(entry.second.c_str())); + for (const auto &[type, name] : checkTypes) { + if (type == MacroConditionAudio::Type::MONITOR) { + if (obs_audio_monitoring_available()) { + list->addItem(obs_module_text(name.c_str()), + static_cast(type)); + } + } else { + list->addItem(obs_module_text(name.c_str()), + static_cast(type)); + } } } @@ -398,14 +406,15 @@ void MacroConditionAudioEdit::ConditionChanged(int cond) SetWidgetVisibility(); } -void MacroConditionAudioEdit::CheckTypeChanged(int cond) +void MacroConditionAudioEdit::CheckTypeChanged(int idx) { if (_loading || !_entryData) { return; } std::lock_guard lock(switcher->m); - _entryData->_checkType = static_cast(cond); + _entryData->_checkType = static_cast( + _checkTypes->itemData(idx).toInt()); const QSignalBlocker b(_condition); if (_entryData->_checkType == @@ -429,7 +438,8 @@ void MacroConditionAudioEdit::UpdateEntryData() _volume->setValue(_entryData->_volume); _syncOffset->setValue(_entryData->_syncOffset); _monitorTypes->setCurrentIndex(_entryData->_monitorType); - _checkTypes->setCurrentIndex(static_cast(_entryData->_checkType)); + _checkTypes->setCurrentIndex(_checkTypes->findData( + static_cast(_entryData->_checkType))); if (_entryData->_checkType == MacroConditionAudio::Type::OUTPUT_VOLUME) { populateOutputConditionSelection(_condition);