mirror of
https://github.com/Relintai/sdl2_frt.git
synced 2024-12-16 11:06:49 +01:00
Added a hint to prevent SDL from installing signal handlers.
Fixes Bugzilla #2431.
This commit is contained in:
parent
162ef5eae9
commit
a91a5604cd
@ -546,6 +546,18 @@ extern "C" {
|
||||
*/
|
||||
#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT"
|
||||
|
||||
/**
|
||||
* \brief Tell SDL not to handle SIGINT.
|
||||
*
|
||||
* This hint only applies to Unix-like platforms.
|
||||
*
|
||||
* The variable can be set to the following values:
|
||||
* "0" - SDL will install a SIGINT handler, and when it catches the
|
||||
* signal, conver it into an SDL_QUIT event.
|
||||
* "1" - SDL will not install a SIGINT handler.
|
||||
*/
|
||||
#define SDL_HINT_DISABLE_SIGINT_HANDLER "SDL_DISABLE_SIGINT_HANDLER"
|
||||
|
||||
/**
|
||||
* \brief An enumeration of hint priorities
|
||||
*/
|
||||
|
@ -19,6 +19,7 @@
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
*/
|
||||
#include "../SDL_internal.h"
|
||||
#include "SDL_hints.h"
|
||||
|
||||
/* General quit handling code for SDL */
|
||||
|
||||
@ -30,6 +31,8 @@
|
||||
#include "SDL_events_c.h"
|
||||
|
||||
|
||||
static SDL_bool disable_signals = SDL_FALSE;
|
||||
|
||||
#ifdef HAVE_SIGNAL_H
|
||||
static void
|
||||
SDL_HandleSIG(int sig)
|
||||
@ -46,6 +49,12 @@ SDL_HandleSIG(int sig)
|
||||
int
|
||||
SDL_QuitInit(void)
|
||||
{
|
||||
const char *hint = SDL_GetHint(SDL_HINT_DISABLE_SIGINT_HANDLER);
|
||||
disable_signals = hint && (SDL_atoi(hint) == 1);
|
||||
if (disable_signals) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef HAVE_SIGACTION
|
||||
struct sigaction action;
|
||||
sigaction(SIGINT, NULL, &action);
|
||||
@ -80,12 +89,16 @@ SDL_QuitInit(void)
|
||||
#endif /* HAVE_SIGNAL_H */
|
||||
|
||||
/* That's it! */
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
SDL_QuitQuit(void)
|
||||
{
|
||||
if (disable_signals) {
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef HAVE_SIGACTION
|
||||
struct sigaction action;
|
||||
sigaction(SIGINT, NULL, &action);
|
||||
|
Loading…
Reference in New Issue
Block a user