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"
|
#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
|
* \brief An enumeration of hint priorities
|
||||||
*/
|
*/
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
3. This notice may not be removed or altered from any source distribution.
|
3. This notice may not be removed or altered from any source distribution.
|
||||||
*/
|
*/
|
||||||
#include "../SDL_internal.h"
|
#include "../SDL_internal.h"
|
||||||
|
#include "SDL_hints.h"
|
||||||
|
|
||||||
/* General quit handling code for SDL */
|
/* General quit handling code for SDL */
|
||||||
|
|
||||||
@ -30,6 +31,8 @@
|
|||||||
#include "SDL_events_c.h"
|
#include "SDL_events_c.h"
|
||||||
|
|
||||||
|
|
||||||
|
static SDL_bool disable_signals = SDL_FALSE;
|
||||||
|
|
||||||
#ifdef HAVE_SIGNAL_H
|
#ifdef HAVE_SIGNAL_H
|
||||||
static void
|
static void
|
||||||
SDL_HandleSIG(int sig)
|
SDL_HandleSIG(int sig)
|
||||||
@ -46,6 +49,12 @@ SDL_HandleSIG(int sig)
|
|||||||
int
|
int
|
||||||
SDL_QuitInit(void)
|
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
|
#ifdef HAVE_SIGACTION
|
||||||
struct sigaction action;
|
struct sigaction action;
|
||||||
sigaction(SIGINT, NULL, &action);
|
sigaction(SIGINT, NULL, &action);
|
||||||
@ -80,12 +89,16 @@ SDL_QuitInit(void)
|
|||||||
#endif /* HAVE_SIGNAL_H */
|
#endif /* HAVE_SIGNAL_H */
|
||||||
|
|
||||||
/* That's it! */
|
/* That's it! */
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
SDL_QuitQuit(void)
|
SDL_QuitQuit(void)
|
||||||
{
|
{
|
||||||
|
if (disable_signals) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HAVE_SIGACTION
|
#ifdef HAVE_SIGACTION
|
||||||
struct sigaction action;
|
struct sigaction action;
|
||||||
sigaction(SIGINT, NULL, &action);
|
sigaction(SIGINT, NULL, &action);
|
||||||
|
Loading…
Reference in New Issue
Block a user