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
parent ecc7f2a521
commit 4fd6c66edb

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.