Only show audio monitoring options if monitoring is supported by OBS

This commit is contained in:
WarmUpTill
2022-12-24 00:02:35 +01:00
committed by WarmUpTill
parent 4eafbb8f18
commit bba029e901
2 changed files with 30 additions and 10 deletions

View File

@@ -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<int>(action));
}
} else {
list->addItem(obs_module_text(name.c_str()),
static_cast<int>(action));
}
}
}
@@ -448,7 +456,8 @@ void MacroActionAudioEdit::UpdateEntryData()
_audioSources->setCurrentText(
GetWeakSourceName(_entryData->_audioSource).c_str());
_actions->setCurrentIndex(static_cast<int>(_entryData->_action));
_actions->setCurrentIndex(
_actions->findData(static_cast<int>(_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<std::mutex> lock(switcher->m);
_entryData->_action = static_cast<MacroActionAudio::Action>(value);
_entryData->_action = static_cast<MacroActionAudio::Action>(
_actions->itemData(idx).toInt());
SetWidgetVisibility();
}

View File

@@ -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<int>(type));
}
} else {
list->addItem(obs_module_text(name.c_str()),
static_cast<int>(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<std::mutex> lock(switcher->m);
_entryData->_checkType = static_cast<MacroConditionAudio::Type>(cond);
_entryData->_checkType = static_cast<MacroConditionAudio::Type>(
_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<int>(_entryData->_checkType));
_checkTypes->setCurrentIndex(_checkTypes->findData(
static_cast<int>(_entryData->_checkType)));
if (_entryData->_checkType ==
MacroConditionAudio::Type::OUTPUT_VOLUME) {
populateOutputConditionSelection(_condition);