summaryrefslogtreecommitdiff
path: root/src/shared
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-12-15 21:56:50 -0500
committerisanae <14251494+isanae@users.noreply.github.com>2019-12-15 21:56:50 -0500
commitf3c5cebb6e9262625105d4339a54a810d7816811 (patch)
treef8a241de842327e80581b504a042f93d79e4d0e8 /src/shared
parentdcf88361d49da262acaac335d1317a5d7ef42ded (diff)
fixed exiting before QThread joins when pressing the X twice
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/util.cpp11
-rw-r--r--src/shared/util.h1
2 files changed, 11 insertions, 1 deletions
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