Handle CTRL_CLOSE_EVENT on Windows (#2952)

This allows us to terminate gracefully when console window is closed.
Mostly relevant for portable builds.
This commit is contained in:
ns6089 2024-08-04 00:21:10 +03:00 committed by GitHub
commit 4fd6c66edb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -71,6 +71,15 @@ SessionMonitorWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
return DefWindowProc(hwnd, uMsg, wParam, lParam);
}
}
WINAPI BOOL
ConsoleCtrlHandler(DWORD type) {
if (type == CTRL_CLOSE_EVENT) {
BOOST_LOG(info) << "Console closed handler called";
lifetime::exit_sunshine(0, false);
}
return FALSE;
}
#endif
int
@ -244,6 +253,11 @@ main(int argc, char *argv[]) {
shutdown_event->raise(true);
});
#ifdef _WIN32
// Terminate gracefully on Windows when console window is closed
SetConsoleCtrlHandler(ConsoleCtrlHandler, TRUE);
#endif
proc::refresh(config::stream.file_apps);
// If any of the following fail, we log an error and continue event though sunshine will not function correctly.