From 627f8da3cdf19e049ee9120d6b5a67f80f8af7cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Mon, 14 Jul 2025 20:22:36 +0200 Subject: [PATCH] [WINLOGON] SASWindowProc(): Call PostQuitMessage(0) on WM_DESTROY Now the WinMain() message loop correctly exits and we get to perform last-time cleanup. However, the main thread must not exit (except under certain conditions, not yet implemented), so we Sleep for an infinite amount of time. --- base/system/winlogon/sas.c | 1 + base/system/winlogon/winlogon.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/base/system/winlogon/sas.c b/base/system/winlogon/sas.c index c846d05ca52..975acce1592 100644 --- a/base/system/winlogon/sas.c +++ b/base/system/winlogon/sas.c @@ -1542,6 +1542,7 @@ SASWindowProc( { if (!GetSetupType()) UnregisterHotKeys(Session, hwndDlg); + PostQuitMessage(0); return TRUE; } case WM_SETTINGCHANGE: diff --git a/base/system/winlogon/winlogon.c b/base/system/winlogon/winlogon.c index 480272ac80a..8500560f4d4 100644 --- a/base/system/winlogon/winlogon.c +++ b/base/system/winlogon/winlogon.c @@ -614,6 +614,7 @@ WinMain( CleanupNotifications(); /* We never go there */ - + // TODO: Shutdown if we are in session 0, otherwise let the process terminate. + SleepEx(INFINITE, FALSE); return 0; }