diff --git a/CHANGELOG.md b/CHANGELOG.md index 39348f0..b2cee8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ Folding@home Client Changelog ============================= +## v8.4.8 + - Delay Windows shutdown until F@H has shutdown gracefully. + ## v8.4.7 - Pause group after 5 consecutive lost WUs. #305 - Ensure WU is saved to DB in case shutdown Windows kills the process. #290 diff --git a/package.json b/package.json index debc9a2..5702158 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fah-client", - "version": "8.4.7", + "version": "8.4.8", "bin": {"fah-client": "./fah-client"}, "author": "Joseph Coffland ", "homepage": "https://foldingathome.org/", diff --git a/src/fah/client/win/WinOSImpl.cpp b/src/fah/client/win/WinOSImpl.cpp index a6e1bed..bcba6db 100644 --- a/src/fah/client/win/WinOSImpl.cpp +++ b/src/fah/client/win/WinOSImpl.cpp @@ -246,7 +246,7 @@ void WinOSImpl::run() { LRESULT WinOSImpl::windowProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { - case WM_DESTROY: case WM_QUERYENDSESSION: case WM_ENDSESSION: + case WM_DESTROY: Shell_NotifyIcon(NIM_DELETE, ¬ifyIconData); if (hWnd) KillTimer(hWnd, ID_UPDATE_TIMER); OS::requestExit(); @@ -254,6 +254,11 @@ LRESULT WinOSImpl::windowProc(HWND hWnd, UINT message, WPARAM wParam, hWnd = 0; return 0; + case WM_QUERYENDSESSION: + OS::requestExit(); + if (hWnd) ShutdownBlockReasonCreate(hWnd, _T("Folding@home shutting down")); + return 0; + case WM_POWERBROADCAST: if (wParam == PBT_POWERSETTINGCHANGE) { POWERBROADCAST_SETTING &pbs = *((POWERBROADCAST_SETTING *)lParam); @@ -280,7 +285,7 @@ LRESULT WinOSImpl::windowProc(HWND hWnd, UINT message, WPARAM wParam, case ID_USER_FOLD: OS::setState(STATE_FOLD); return 0; case ID_USER_PAUSE: OS::setState(STATE_PAUSE); return 0; case ID_USER_ABOUT: showAbout(hWnd); return 0; - case ID_USER_EXIT: DestroyWindow(hWnd); return 0; + case ID_USER_EXIT: OS::requestExit(); return 0; } break; }