From f3c5cebb6e9262625105d4339a54a810d7816811 Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Sun, 15 Dec 2019 21:56:50 -0500 Subject: fixed exiting before QThread joins when pressing the X twice --- src/shared/util.cpp | 11 ++++++++++- src/shared/util.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'src/shared') diff --git a/src/shared/util.cpp b/src/shared/util.cpp index 32eb825c..baceddeb 100644 --- a/src/shared/util.cpp +++ b/src/shared/util.cpp @@ -294,6 +294,7 @@ QString getUsvfsVersionString() static bool g_exiting = false; +static bool g_canClose = false; MainWindow* findMainWindow() { @@ -312,6 +313,9 @@ bool ExitModOrganizer(ExitFlags e) return true; } + g_exiting = true; + MOBase::Guard g([&]{ g_exiting = false; }); + if (!e.testFlag(Exit::Force)) { if (auto* mw=findMainWindow()) { if (!mw->canExit()) { @@ -320,7 +324,7 @@ bool ExitModOrganizer(ExitFlags e) } } - g_exiting = true; + g_canClose = true; const int code = (e.testFlag(Exit::Restart) ? RestartExitCode : 0); qApp->exit(code); @@ -328,6 +332,11 @@ bool ExitModOrganizer(ExitFlags e) return true; } +bool ModOrganizerCanCloseNow() +{ + return g_canClose; +} + bool ModOrganizerExiting() { return g_exiting; diff --git a/src/shared/util.h b/src/shared/util.h index e87244b6..e8a58549 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -65,6 +65,7 @@ Q_DECLARE_OPERATORS_FOR_FLAGS(ExitFlags); bool ExitModOrganizer(ExitFlags e=Exit::Normal); bool ModOrganizerExiting(); +bool ModOrganizerCanCloseNow(); void ResetExitFlag(); #endif // UTIL_H -- cgit v1.3.1