From 88b94c3c679c281765abd2a771eec660d99a4540 Mon Sep 17 00:00:00 2001 From: truelight Date: Sat, 18 Dec 2004 13:15:41 +0000 Subject: [PATCH] (svn r1152) -Add: [Network] Added signal handling (GeniusDex) --- dedicated.c | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/dedicated.c b/dedicated.c index b164181c86..10e2cb4a52 100644 --- a/dedicated.c +++ b/dedicated.c @@ -17,6 +17,7 @@ # include /* gettimeofday */ # include # include +# include # define STDIN 0 /* file descriptor for standard input */ #endif @@ -24,6 +25,15 @@ static void *_dedicated_video_mem; +#ifdef UNIX +/* Signal handlers */ +void DedicatedSignalHandler(int sig) +{ + _exit_game = true; + signal(sig, DedicatedSignalHandler); +} +#endif + static const char *DedicatedVideoStart(char **parm) { _screen.width = _screen.pitch = _cur_resolution[0]; _screen.height = _cur_resolution[1]; @@ -90,6 +100,12 @@ static int DedicatedVideoMainLoop() { next_tick = (tim.tv_usec / 1000) + 30 + (tim.tv_sec * 1000); #endif + /* Siganl handlers */ +#ifdef UNIX + signal(SIGTERM, DedicatedSignalHandler); + signal(SIGINT, DedicatedSignalHandler); +#endif + // Load the dedicated server stuff _is_network_server = true; _network_dedicated = true; @@ -107,6 +123,8 @@ static int DedicatedVideoMainLoop() { while (true) { InteractiveRandom(); // randomness + if (_exit_game) return ML_QUIT; + #ifdef UNIX if (InputWaiting()) { fgets(input_line, 200, stdin); @@ -128,8 +146,6 @@ static int DedicatedVideoMainLoop() { } #endif - if (_exit_game) return ML_QUIT; - #ifdef WIN32 cur_ticks = GetTickCount(); #else