From adfbbe3a023696db354daf5964399102ffe8d130 Mon Sep 17 00:00:00 2001 From: Pokechu22 Date: Sat, 8 Jun 2019 16:02:01 -0700 Subject: [PATCH] Disallow changing the backend when running when software renderer is currently selected It already is disabled for other backends, but this didn't happen with the software renderer. Attempting to change it while running causes the change to visually happen (including switching to the normal render settings UI instead of the barren one for the software renderer), but doesn't actually change the backend itself (it'll still use the software renderer at the next launch). --- .../Config/Graphics/SoftwareRendererWidget.cpp | 15 ++++++++++++--- .../Config/Graphics/SoftwareRendererWidget.h | 2 ++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp b/Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp index 4941d1b556..1e2496d2f7 100644 --- a/Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp +++ b/Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.cpp @@ -13,6 +13,7 @@ #include "Core/Config/GraphicsSettings.h" #include "Core/ConfigManager.h" +#include "Core/Core.h" #include "DolphinQt/Config/Graphics/GraphicsBool.h" #include "DolphinQt/Config/Graphics/GraphicsWindow.h" @@ -26,12 +27,15 @@ SoftwareRendererWidget::SoftwareRendererWidget(GraphicsWindow* parent) : GraphicsWidget(parent) { CreateWidgets(); - - connect(parent, &GraphicsWindow::BackendChanged, [this] { LoadSettings(); }); - LoadSettings(); ConnectWidgets(); AddDescriptions(); + emit BackendChanged(QString::fromStdString(SConfig::GetInstance().m_strVideoBackend)); + + connect(parent, &GraphicsWindow::BackendChanged, [this] { LoadSettings(); }); + connect(&Settings::Instance(), &Settings::EmulationStateChanged, this, + [=](Core::State state) { OnEmulationStateChanged(state != Core::State::Uninitialized); }); + OnEmulationStateChanged(Core::GetState() != Core::State::Uninitialized); } void SoftwareRendererWidget::CreateWidgets() @@ -180,3 +184,8 @@ void SoftwareRendererWidget::AddDescriptions() AddDescription(m_dump_tev_stages, TR_DUMP_TEV_STAGES_DESCRIPTION); AddDescription(m_dump_tev_fetches, TR_DUMP_TEV_FETCHES_DESCRIPTION); } + +void SoftwareRendererWidget::OnEmulationStateChanged(bool running) +{ + m_backend_combo->setEnabled(!running); +} diff --git a/Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.h b/Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.h index df328ec5ec..5b3ce64b5b 100644 --- a/Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.h +++ b/Source/Core/DolphinQt/Config/Graphics/SoftwareRendererWidget.h @@ -28,6 +28,8 @@ private: void ConnectWidgets(); void AddDescriptions(); + void OnEmulationStateChanged(bool running); + QComboBox* m_backend_combo; QCheckBox* m_show_statistics; QCheckBox* m_dump_textures;