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)