Skip to content

Commit

Permalink
Handle CTRL_CLOSE_EVENT on Windows
Browse files Browse the repository at this point in the history
This allows us to terminate gracefully when console window is closed.
Mostly relevant for portable builds.
  • Loading branch information
ns6089 committed Aug 3, 2024
1 parent 444ca98 commit 6d4d7fe
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit 6d4d7fe

Please sign in to comment.