summaryrefslogtreecommitdiff
path: root/indra/llwindow/llwindowwin32.cpp
diff options
context:
space:
mode:
authorErik Kundiman <erik@megapahit.org>2025-12-04 13:58:12 +0800
committerErik Kundiman <erik@megapahit.org>2025-12-04 16:48:50 +0800
commite3a35af2c676fb211ff7d01a79eb1a3299bc82f3 (patch)
tree0ff7a0a15d1a53850399250b65f0a2a42f7bbf22 /indra/llwindow/llwindowwin32.cpp
parentac052bed7f9f97efc63f0a0322214d4dcdcd5664 (diff)
parentc4ec3d866082d588de671e833413474d7ab19524 (diff)
Merge remote-tracking branch 'secondlife/release/2026.01' into 2026.01
Diffstat (limited to 'indra/llwindow/llwindowwin32.cpp')
-rw-r--r--indra/llwindow/llwindowwin32.cpp19
1 files changed, 8 insertions, 11 deletions
diff --git a/indra/llwindow/llwindowwin32.cpp b/indra/llwindow/llwindowwin32.cpp
index 5471e1c87a..8edaa920bb 100644
--- a/indra/llwindow/llwindowwin32.cpp
+++ b/indra/llwindow/llwindowwin32.cpp
@@ -2504,16 +2504,13 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
// Comes after WM_QUERYENDSESSION
LL_PROFILE_ZONE_NAMED_CATEGORY_WIN32("mwp - WM_ENDSESSION");
LL_INFOS("Window") << "Received WM_ENDSESSION with wParam: " << (U32)w_param << " lParam: " << (U32)l_param << LL_ENDL;
- unsigned int end_session_flags = (U32)w_param;
- if (end_session_flags == 0)
- {
- // session is not actually ending
- return 0;
- }
+ unsigned int end_session_flags = (U32)l_param;
- if ((end_session_flags & ENDSESSION_CLOSEAPP)
- || (end_session_flags & ENDSESSION_CRITICAL)
- || (end_session_flags & ENDSESSION_LOGOFF))
+ if (w_param == TRUE // if true, session is ending
+ || end_session_flags == 0 // not possible to determine type of the event
+ // || (end_session_flags & ENDSESSION_CLOSEAPP)) system update or low resources, must be acompanied by w_param == TRUE
+ || (end_session_flags & ENDSESSION_CRITICAL) // will shutdown regardless of app state
+ || (end_session_flags & ENDSESSION_LOGOFF)) // logoff, can delay shutdown
{
window_imp->post([=]()
{
@@ -2522,13 +2519,13 @@ LRESULT CALLBACK LLWindowWin32::mainWindowProc(HWND h_wnd, UINT u_msg, WPARAM w_
{
// Get the app to initiate cleanup.
window_imp->mCallbacks->handleQuit(window_imp);
- // The app is responsible for calling destroyWindow when done with GL
}
});
// Give app a second to finish up. That's not enough for a clean exit,
// but better than nothing.
// Todo: sync this better, some kind of waitForResult? Can't wait forever,
- // but can potentially use ShutdownBlockReasonCreate for a bigger delay.
+ // but for ENDSESSION_LOGOFF can potentially use ShutdownBlockReasonCreate
+ // for a bigger delay.
ms_sleep(1000);
}
// Don't need to post quit or destroy window,