diff --git a/client/ui/services/shutdown.go b/client/ui/services/shutdown.go index 81d517099..0da51940c 100644 --- a/client/ui/services/shutdown.go +++ b/client/ui/services/shutdown.go @@ -2,16 +2,23 @@ package services import "sync/atomic" -var shuttingDown atomic.Bool +var ( + sessionEnding atomic.Bool + quitting atomic.Bool +) -func BeginShutdown() { - shuttingDown.Store(true) +func BeginSessionEnd() { + sessionEnding.Store(true) } -func AbortShutdown() { - shuttingDown.Store(false) +func AbortSessionEnd() { + sessionEnding.Store(false) +} + +func BeginShutdown() { + quitting.Store(true) } func ShuttingDown() bool { - return shuttingDown.Load() + return sessionEnding.Load() || quitting.Load() } diff --git a/client/ui/shutdown_windows.go b/client/ui/shutdown_windows.go index 2f351b1ce..fbb92a518 100644 --- a/client/ui/shutdown_windows.go +++ b/client/ui/shutdown_windows.go @@ -19,11 +19,11 @@ func endSessionInterceptor() func(hwnd uintptr, msg uint32, wParam, lParam uintp return func(_ uintptr, msg uint32, wParam, _ uintptr) (uintptr, bool) { switch msg { case wmQueryEndSession: - services.BeginShutdown() + services.BeginSessionEnd() return 1, true case wmEndSession: if wParam == 0 { - services.AbortShutdown() + services.AbortSessionEnd() return 0, true } log.Info("windows session is ending; exiting immediately")