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.
This commit is contained in:
Silent 2019-11-10 23:58:39 +01:00
commit 85c2841643
No known key found for this signature in database
GPG key ID: AE53149BB0C45AF1
2 changed files with 9 additions and 1 deletions

View file

@ -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)
{