aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/zencore.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2024-03-21 13:03:41 +0100
committerGitHub Enterprise <[email protected]>2024-03-21 13:03:41 +0100
commitf60aec8607aa4ef70b4653d201c854b00a538951 (patch)
treea10a9b168fbc4f1f9a64c52f3126faecf845b795 /src/zencore/zencore.cpp
parent5.4.2-pre6 (diff)
downloadzen-f60aec8607aa4ef70b4653d201c854b00a538951.tar.xz
zen-f60aec8607aa4ef70b4653d201c854b00a538951.zip
harden attach sponsor process (#14)
- Improvement: Delay exiting due to no sponsor processes by one second to handle race conditions - Improvement: Safer IsProcessRunning check - Improvement: make sure we can RequestApplicationExit safely from any thread
Diffstat (limited to 'src/zencore/zencore.cpp')
-rw-r--r--src/zencore/zencore.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/zencore/zencore.cpp b/src/zencore/zencore.cpp
index d0acac608..b80b1d280 100644
--- a/src/zencore/zencore.cpp
+++ b/src/zencore/zencore.cpp
@@ -115,11 +115,16 @@ IsApplicationExitRequested()
return s_ApplicationExitRequested;
}
-void
+bool
RequestApplicationExit(int ExitCode)
{
- s_ApplicationExitCode = ExitCode;
- s_ApplicationExitRequested = true;
+ bool Expected = false;
+ if (s_ApplicationExitRequested.compare_exchange_weak(Expected, true))
+ {
+ s_ApplicationExitCode = ExitCode;
+ return true;
+ }
+ return false;
}
int