From 5a955a4fdc5b28d9806e0f9a4b7d2d6a3e3191e0 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Fri, 24 Jul 2020 02:55:00 +1000 Subject: [PATCH] Qt: Fix audio volume/mute being lost when restarting emulation --- src/duckstation-qt/audiosettingswidget.cpp | 2 +- src/duckstation-qt/qthostinterface.cpp | 16 ++++++++++++++++ src/duckstation-qt/qthostinterface.h | 1 + 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/duckstation-qt/audiosettingswidget.cpp b/src/duckstation-qt/audiosettingswidget.cpp index e4c1ef1da..13410ff7b 100644 --- a/src/duckstation-qt/audiosettingswidget.cpp +++ b/src/duckstation-qt/audiosettingswidget.cpp @@ -79,5 +79,5 @@ void AudioSettingsWidget::onOutputMutedChanged(int new_state) { const bool muted = (new_state != 0); m_host_interface->SetBoolSettingValue("Audio", "OutputMuted", muted); - m_host_interface->setAudioOutputVolume(muted ? 0 : m_ui.volume->value()); + m_host_interface->setAudioOutputMuted(muted); } \ No newline at end of file diff --git a/src/duckstation-qt/qthostinterface.cpp b/src/duckstation-qt/qthostinterface.cpp index 71efd6693..6009ac051 100644 --- a/src/duckstation-qt/qthostinterface.cpp +++ b/src/duckstation-qt/qthostinterface.cpp @@ -897,6 +897,22 @@ void QtHostInterface::setAudioOutputVolume(int value) if (m_audio_stream) m_audio_stream->SetOutputVolume(value); + + m_settings.audio_output_volume = value; +} + +void QtHostInterface::setAudioOutputMuted(bool muted) +{ + if (!isOnWorkerThread()) + { + QMetaObject::invokeMethod(this, "setAudioOutputMuted", Q_ARG(bool, muted)); + return; + } + + if (m_audio_stream) + m_audio_stream->SetOutputVolume(muted ? 0 : m_settings.audio_output_volume); + + m_settings.audio_output_muted = muted; } void QtHostInterface::startDumpingAudio() diff --git a/src/duckstation-qt/qthostinterface.h b/src/duckstation-qt/qthostinterface.h index 8a77f296a..dfd9469b3 100644 --- a/src/duckstation-qt/qthostinterface.h +++ b/src/duckstation-qt/qthostinterface.h @@ -136,6 +136,7 @@ public Q_SLOTS: void loadState(bool global, qint32 slot); void saveState(bool global, qint32 slot, bool block_until_done = false); void setAudioOutputVolume(int value); + void setAudioOutputMuted(bool muted); void startDumpingAudio(); void stopDumpingAudio(); void saveScreenshot();