From 0337e4fc0f4151c2ddfe8df00d64b7e81d37cd6c Mon Sep 17 00:00:00 2001 From: Toad King Date: Tue, 19 Jun 2012 13:40:49 -0400 Subject: [PATCH] move SIGINT and SIGTERM handlers to video driver --- gfx/rpi.c | 13 ++++++++++++- input/linuxraw_input.c | 2 -- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/gfx/rpi.c b/gfx/rpi.c index f90538e95c..43d5f65fe7 100644 --- a/gfx/rpi.c +++ b/gfx/rpi.c @@ -66,6 +66,14 @@ typedef struct { #endif } rpi_t; +static bool rpi_shutdown = false; + +static void rpi_kill(int sig) +{ + (void)sig; + rpi_shutdown = true; +} + static void rpi_set_nonblock_state(void *data, bool state) { rpi_t *rpi = (rpi_t*)data; @@ -211,6 +219,9 @@ static void *rpi_init(const video_info_t *video, const input_driver_t **input, v } #endif + signal(SIGINT, rpi_kill); + signal(SIGTERM, rpi_kill); + return rpi; } @@ -402,7 +413,7 @@ static bool rpi_frame(void *data, const void *frame, unsigned width, unsigned he static bool rpi_alive(void *data) { (void)data; - return true; + return !rpi_shutdown; } static bool rpi_focus(void *data) diff --git a/input/linuxraw_input.c b/input/linuxraw_input.c index c96eb52616..91ed610ea5 100644 --- a/input/linuxraw_input.c +++ b/input/linuxraw_input.c @@ -204,10 +204,8 @@ static void *linuxraw_input_init(void) signal(SIGBUS, linuxraw_exitGracefully); signal(SIGFPE, linuxraw_exitGracefully); signal(SIGILL, linuxraw_exitGracefully); - signal(SIGINT, linuxraw_exitGracefully); signal(SIGQUIT, linuxraw_exitGracefully); signal(SIGSEGV, linuxraw_exitGracefully); - signal(SIGTERM, linuxraw_exitGracefully); atexit(linuxraw_resetKbmd);