From 55ef1069f1f3ac50b2c17a0a25a49149a016ad15 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Wed, 28 Apr 2021 21:58:07 +0200 Subject: [PATCH] DolphinQt: Disable verify button when emulation is running Verifying a Wii game creates an instance of IOS, and Dolphin can't handle more than one instance of IOS at the same time. Properly supporting it is probably more effort than it's worth. Fixes https://bugs.dolphin-emu.org/issues/12494. --- Source/Core/DolphinQt/Config/VerifyWidget.cpp | 16 ++++++++++++++++ Source/Core/DolphinQt/Config/VerifyWidget.h | 3 +++ 2 files changed, 19 insertions(+) diff --git a/Source/Core/DolphinQt/Config/VerifyWidget.cpp b/Source/Core/DolphinQt/Config/VerifyWidget.cpp index ce221bce8f..9a2cd5a413 100644 --- a/Source/Core/DolphinQt/Config/VerifyWidget.cpp +++ b/Source/Core/DolphinQt/Config/VerifyWidget.cpp @@ -17,9 +17,11 @@ #include #include "Common/CommonTypes.h" +#include "Core/Core.h" #include "DiscIO/Volume.h" #include "DiscIO/VolumeVerifier.h" #include "DolphinQt/QtUtils/ParallelProgressDialog.h" +#include "DolphinQt/Settings.h" VerifyWidget::VerifyWidget(std::shared_ptr volume) : m_volume(std::move(volume)) { @@ -38,6 +40,20 @@ VerifyWidget::VerifyWidget(std::shared_ptr volume) : m_volume(st layout->setStretchFactor(m_summary_text, 2); setLayout(layout); + + connect(&Settings::Instance(), &Settings::EmulationStateChanged, this, + &VerifyWidget::OnEmulationStateChanged); + + OnEmulationStateChanged(); +} + +void VerifyWidget::OnEmulationStateChanged() +{ + const bool running = Core::GetState() != Core::State::Uninitialized; + + // Verifying a Wii game while emulation is running doesn't work correctly + // due to verification of a Wii game creating an instance of IOS + m_verify_button->setEnabled(!running); } void VerifyWidget::CreateWidgets() diff --git a/Source/Core/DolphinQt/Config/VerifyWidget.h b/Source/Core/DolphinQt/Config/VerifyWidget.h index c5c6945c4f..7462d5b5e7 100644 --- a/Source/Core/DolphinQt/Config/VerifyWidget.h +++ b/Source/Core/DolphinQt/Config/VerifyWidget.h @@ -27,6 +27,9 @@ class VerifyWidget final : public QWidget public: explicit VerifyWidget(std::shared_ptr volume); +private slots: + void OnEmulationStateChanged(); + private: void CreateWidgets(); std::pair AddHashLine(QFormLayout* layout, QString text);