diff --git a/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp b/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp index 978da839bc..28a2fd5182 100644 --- a/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp +++ b/Source/Core/DolphinQt/Config/Graphics/GeneralWidget.cpp @@ -160,16 +160,16 @@ void GeneralWidget::SaveSettings() const auto current_backend = m_backend_combo->currentData().toString().toStdString(); if (SConfig::GetInstance().m_strVideoBackend != current_backend) { - if (current_backend == "Software Renderer") + auto warningMessage = + g_available_video_backends[m_backend_combo->currentIndex()]->GetWarningMessage(); + if (warningMessage) { ModalMessageBox confirm_sw(this); confirm_sw.setIcon(QMessageBox::Warning); confirm_sw.setStandardButtons(QMessageBox::Yes | QMessageBox::No); confirm_sw.setWindowTitle(tr("Confirm backend change")); - confirm_sw.setText(tr("The software renderer is significantly slower than other " - "backends and is only recommended for debugging purposes.\n\nDo you " - "really want to enable software rendering? If unsure, select 'No'.")); + confirm_sw.setText(tr(warningMessage->c_str())); if (confirm_sw.exec() != QMessageBox::Yes) { diff --git a/Source/Core/VideoBackends/Software/SWmain.cpp b/Source/Core/VideoBackends/Software/SWmain.cpp index 1d02660cf7..4309e39021 100644 --- a/Source/Core/VideoBackends/Software/SWmain.cpp +++ b/Source/Core/VideoBackends/Software/SWmain.cpp @@ -53,6 +53,13 @@ std::string VideoSoftware::GetDisplayName() const return _trans("Software Renderer"); } +std::optional VideoSoftware::GetWarningMessage() const +{ + return _trans("The software renderer is significantly slower than other " + "backends and is only recommended for debugging purposes.\n\nDo you " + "really want to enable software rendering? If unsure, select 'No'."); +} + void VideoSoftware::InitBackendInfo() { g_Config.backend_info.api_type = APIType::Nothing; diff --git a/Source/Core/VideoBackends/Software/VideoBackend.h b/Source/Core/VideoBackends/Software/VideoBackend.h index bad120d6a1..10d70722cd 100644 --- a/Source/Core/VideoBackends/Software/VideoBackend.h +++ b/Source/Core/VideoBackends/Software/VideoBackend.h @@ -16,6 +16,7 @@ class VideoSoftware : public VideoBackendBase std::string GetName() const override; std::string GetDisplayName() const override; + std::optional GetWarningMessage() const override; void InitBackendInfo() override; }; diff --git a/Source/Core/VideoCommon/VideoBackendBase.h b/Source/Core/VideoCommon/VideoBackendBase.h index 0a248dbd70..c7587dea9e 100644 --- a/Source/Core/VideoCommon/VideoBackendBase.h +++ b/Source/Core/VideoCommon/VideoBackendBase.h @@ -5,6 +5,7 @@ #pragma once #include +#include #include #include @@ -42,6 +43,7 @@ public: virtual std::string GetName() const = 0; virtual std::string GetDisplayName() const { return GetName(); } virtual void InitBackendInfo() = 0; + virtual std::optional GetWarningMessage() const { return {}; } // Prepares a native window for rendering. This is called on the main thread, or the // thread which owns the window.