Skip to content
Permalink
Browse files

Make "Do you want to stop emulation?" application modal and disallow …

…multiple instances at once

Fixes numerous issues with this dialog spawning multiple times
and putting Dolphin in a weird state.
  • Loading branch information
CookiePLMonster committed Nov 10, 2019
1 parent af92a88 commit 85c284164339500929b9c42fcdac8e0dcc8b5ec3
Showing with 9 additions and 1 deletion.
  1. +8 −1 Source/Core/DolphinQt/MainWindow.cpp
  2. +1 −0 Source/Core/DolphinQt/MainWindow.h
@@ -30,6 +30,7 @@
#include <qpa/qplatformnativeinterface.h>
#endif

#include "Common/ScopeGuard.h"
#include "Common/Version.h"
#include "Common/WindowSystemInfo.h"

@@ -785,6 +786,11 @@ bool MainWindow::RequestStop()

if (SConfig::GetInstance().bConfirmStop)
{
if (std::exchange(m_stop_confirm_showing, true))
return true;

Common::ScopeGuard confirm_lock([this] { m_stop_confirm_showing = false; });

const Core::State state = Core::GetState();

// Only pause the game, if NetPlay is not running
@@ -798,7 +804,8 @@ bool MainWindow::RequestStop()
m_stop_requested ? tr("A shutdown is already in progress. Unsaved data "
"may be lost if you stop the current emulation "
"before it completes. Force stop?") :
tr("Do you want to stop the current emulation?"));
tr("Do you want to stop the current emulation?"),
QMessageBox::Yes | QMessageBox::No, QMessageBox::NoButton, Qt::ApplicationModal);

if (confirm != QMessageBox::Yes)
{
@@ -198,6 +198,7 @@ class MainWindow final : public QMainWindow
GameList* m_game_list;
RenderWidget* m_render_widget = nullptr;
bool m_rendering_to_main;
bool m_stop_confirm_showing = false;
bool m_stop_requested = false;
bool m_exit_requested = false;
bool m_fullscreen_requested = false;

0 comments on commit 85c2841

Please sign in to comment.
You can’t perform that action at this time.