Mercurial > sdl-ios-xcode
diff src/events/SDL_quit.c @ 1123:28ac87a38c17
Date: Fri, 08 Jul 2005 22:43:48 +0200 (CEST)
From: Jiri Svoboda
Subject: [SDL] signal handling bug
I encountered the following bug:
SDL doesn't reset signal handlers for SIGTERM and SIGINT, after calling SDL_Quit these remain hooked to the handler in SDL_quit.c, being translated into SDL_QUIT events.
Consequently an application that issues a SDL_Quit and remains running will ignore any SIGTERM or SIGINT., and specifically CTRL-C presses.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 21 Aug 2005 06:18:54 +0000 |
parents | b8d311d90021 |
children | 51a8702d8ecd |
line wrap: on
line diff
--- a/src/events/SDL_quit.c Sat Aug 20 21:39:06 2005 +0000 +++ b/src/events/SDL_quit.c Sun Aug 21 06:18:54 2005 +0000 @@ -54,7 +54,7 @@ void (*ohandler)(int); /* Both SIGINT and SIGTERM are translated into quit interrupts */ - ohandler = signal(SIGINT, SDL_HandleSIG); + ohandler = signal(SIGINT, SDL_HandleSIG); if ( ohandler != SIG_DFL ) signal(SIGINT, ohandler); ohandler = signal(SIGTERM, SDL_HandleSIG); @@ -65,6 +65,19 @@ /* That's it! */ return(0); } +void SDL_QuitQuit(void) +{ +#ifndef NO_SIGNAL_H + void (*ohandler)(int); + + ohandler = signal(SIGINT, SIG_DFL); + if ( ohandler != SDL_HandleSIG ) + signal(SIGINT, ohandler); + ohandler = signal(SIGTERM, SIG_DFL); + if ( ohandler != SDL_HandleSIG ) + signal(SIGTERM, ohandler); +#endif /* NO_SIGNAL_H */ +} /* This function returns 1 if it's okay to close the application window */ int SDL_PrivateQuit(void)