From 9131f02ec9ec3d67d856076d16c134c47ef34925 Mon Sep 17 00:00:00 2001 From: Tore Date: Wed, 24 May 2023 21:18:03 +0200 Subject: [PATCH] Changed to the same method RA uses and thus avoids the call to PostMessage with SDL enabled --- tiberiandawn/startup.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/tiberiandawn/startup.cpp b/tiberiandawn/startup.cpp index aba247fe..d08c98f9 100644 --- a/tiberiandawn/startup.cpp +++ b/tiberiandawn/startup.cpp @@ -467,7 +467,6 @@ int main(int argc, char** argv) Memory_Error_Exit = Print_Error_Exit; CCDebugString("C&C95 - About to exit.\n"); - ReadyToQuit = 1; #if defined(SDL_BUILD) Reset_Video_Mode(); @@ -475,8 +474,23 @@ int main(int argc, char** argv) Sound_End(); -#if defined(_WIN32) - PostMessageA(MainWindow, WM_DESTROY, 0, 0); + /* + ** Flag that this is a clean shutdown (not killed with Ctrl-Alt-Del) + */ + ReadyToQuit = 1; + + /* + ** Post a message to our message handler to tell it to clean up. + */ +#if defined(_WIN32) && !defined(SDL_BUILD) + PostMessage(MainWindow, WM_DESTROY, 0, 0); + + /* + ** Wait until the message handler has dealt with the message + */ + do { + Keyboard->Check(); + } while (ReadyToQuit == 1); #endif CCDebugString("C&C95 - Returned from final message loop.\n");