From bc9246b444f719d3cf911b9ec833e9069e130ee2 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Sun, 7 Jun 2020 01:30:05 +1000 Subject: [PATCH] Qt: Add inline help to audio settings --- src/duckstation-qt/audiosettingswidget.cpp | 23 +++++++++++++++++++++- src/duckstation-qt/audiosettingswidget.h | 3 ++- src/duckstation-qt/settingsdialog.cpp | 2 +- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/duckstation-qt/audiosettingswidget.cpp b/src/duckstation-qt/audiosettingswidget.cpp index 4fbd3b014..07b90d135 100644 --- a/src/duckstation-qt/audiosettingswidget.cpp +++ b/src/duckstation-qt/audiosettingswidget.cpp @@ -1,8 +1,9 @@ #include "audiosettingswidget.h" #include "common/audio_stream.h" +#include "settingsdialog.h" #include "settingwidgetbinder.h" -AudioSettingsWidget::AudioSettingsWidget(QtHostInterface* host_interface, QWidget* parent /* = nullptr */) +AudioSettingsWidget::AudioSettingsWidget(QtHostInterface* host_interface, QWidget* parent, SettingsDialog* dialog) : QWidget(parent), m_host_interface(host_interface) { m_ui.setupUi(this); @@ -23,6 +24,26 @@ AudioSettingsWidget::AudioSettingsWidget(QtHostInterface* host_interface, QWidge updateBufferingLabel(); updateVolumeLabel(); + + dialog->registerWidgetHelp( + m_ui.audioBackend, "Audio Backend", "Cubeb", + "The audio backend determines how frames produced by the emulator are submitted to the host. Cubeb provides the " + "lowest latency, if you encounter issues, try the SDL backend. The null backend disables all host audio output."); + dialog->registerWidgetHelp(m_ui.bufferSize, "Buffer Size", "2048", + "The buffer size determines the size of the chunks of audio which will be pulled by the " + "host. Smaller values reduce the output latency, but may cause hitches if the emulation " + "speed is inconsistent. Note that the Cubeb backend uses smaller chunks regardless of " + "this value, so using a low value here may not significantly change latency."); + dialog->registerWidgetHelp(m_ui.syncToOutput, "Sync To Output", "Checked", + "Throttles the emulation speed based on the audio backend pulling audio frames. Sync will " + "automatically be disabled if not running at 100% speed."); + dialog->registerWidgetHelp( + m_ui.startDumpingOnBoot, "Start Dumping On Boot", "Unchecked", + "Start dumping audio to file as soon as the emulator is started. Mainly useful as a debug option."); + dialog->registerWidgetHelp(m_ui.volume, "Volume", "100", + "Controls the volume of the audio played on the host. Values are in percentage."); + dialog->registerWidgetHelp(m_ui.muted, "Mute", "Unchecked", + "Prevents the emulator from producing any audible sound."); } AudioSettingsWidget::~AudioSettingsWidget() = default; diff --git a/src/duckstation-qt/audiosettingswidget.h b/src/duckstation-qt/audiosettingswidget.h index 2d32797a5..b8e054483 100644 --- a/src/duckstation-qt/audiosettingswidget.h +++ b/src/duckstation-qt/audiosettingswidget.h @@ -5,13 +5,14 @@ #include "ui_audiosettingswidget.h" class QtHostInterface; +class SettingsDialog; class AudioSettingsWidget : public QWidget { Q_OBJECT public: - explicit AudioSettingsWidget(QtHostInterface* host_interface, QWidget* parent = nullptr); + explicit AudioSettingsWidget(QtHostInterface* host_interface, QWidget* parent, SettingsDialog* dialog); ~AudioSettingsWidget(); private Q_SLOTS: diff --git a/src/duckstation-qt/settingsdialog.cpp b/src/duckstation-qt/settingsdialog.cpp index 40b62d177..9e1dfb9b7 100644 --- a/src/duckstation-qt/settingsdialog.cpp +++ b/src/duckstation-qt/settingsdialog.cpp @@ -52,7 +52,7 @@ SettingsDialog::SettingsDialog(QtHostInterface* host_interface, QWidget* parent m_controller_settings = new ControllerSettingsWidget(host_interface, m_ui.settingsContainer); m_memory_card_settings = new MemoryCardSettingsWidget(host_interface, m_ui.settingsContainer); m_gpu_settings = new GPUSettingsWidget(host_interface, m_ui.settingsContainer, this); - m_audio_settings = new AudioSettingsWidget(host_interface, m_ui.settingsContainer); + m_audio_settings = new AudioSettingsWidget(host_interface, m_ui.settingsContainer, this); m_advanced_settings = new AdvancedSettingsWidget(host_interface, m_ui.settingsContainer, this); m_ui.settingsContainer->insertWidget(static_cast(Category::GeneralSettings), m_general_settings);