SDL 1.2 is moving to a branch, and SDL 1.3 is becoming the head.

--HG--
extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%401938
This commit is contained in:
Sam Lantinga 2006-07-10 21:04:37 +00:00
parent 91a32b77a2
commit 0f030a1802
686 changed files with 117556 additions and 98661 deletions

View file

@ -35,85 +35,88 @@
the program crashes.
*/
static void SDL_Parachute(int sig)
static void
SDL_Parachute(int sig)
{
signal(sig, SIG_DFL);
SDL_Quit();
raise(sig);
signal(sig, SIG_DFL);
SDL_Quit();
raise(sig);
}
static int SDL_fatal_signals[] = {
SIGSEGV,
SIGSEGV,
#ifdef SIGBUS
SIGBUS,
SIGBUS,
#endif
#ifdef SIGFPE
SIGFPE,
SIGFPE,
#endif
#ifdef SIGQUIT
SIGQUIT,
SIGQUIT,
#endif
0
0
};
void SDL_InstallParachute(void)
void
SDL_InstallParachute(void)
{
/* Set a handler for any fatal signal not already handled */
int i;
/* Set a handler for any fatal signal not already handled */
int i;
#ifdef HAVE_SIGACTION
struct sigaction action;
struct sigaction action;
for ( i=0; SDL_fatal_signals[i]; ++i ) {
sigaction(SDL_fatal_signals[i], NULL, &action);
if ( action.sa_handler == SIG_DFL ) {
action.sa_handler = SDL_Parachute;
sigaction(SDL_fatal_signals[i], &action, NULL);
}
}
for (i = 0; SDL_fatal_signals[i]; ++i) {
sigaction(SDL_fatal_signals[i], NULL, &action);
if (action.sa_handler == SIG_DFL) {
action.sa_handler = SDL_Parachute;
sigaction(SDL_fatal_signals[i], &action, NULL);
}
}
#ifdef SIGALRM
/* Set SIGALRM to be ignored -- necessary on Solaris */
sigaction(SIGALRM, NULL, &action);
if ( action.sa_handler == SIG_DFL ) {
action.sa_handler = SIG_IGN;
sigaction(SIGALRM, &action, NULL);
}
/* Set SIGALRM to be ignored -- necessary on Solaris */
sigaction(SIGALRM, NULL, &action);
if (action.sa_handler == SIG_DFL) {
action.sa_handler = SIG_IGN;
sigaction(SIGALRM, &action, NULL);
}
#endif
#else
void (*ohandler)(int);
void (*ohandler) (int);
for ( i=0; SDL_fatal_signals[i]; ++i ) {
ohandler = signal(SDL_fatal_signals[i], SDL_Parachute);
if ( ohandler != SIG_DFL ) {
signal(SDL_fatal_signals[i], ohandler);
}
}
for (i = 0; SDL_fatal_signals[i]; ++i) {
ohandler = signal(SDL_fatal_signals[i], SDL_Parachute);
if (ohandler != SIG_DFL) {
signal(SDL_fatal_signals[i], ohandler);
}
}
#endif /* HAVE_SIGACTION */
return;
return;
}
void SDL_UninstallParachute(void)
void
SDL_UninstallParachute(void)
{
/* Remove a handler for any fatal signal handled */
int i;
/* Remove a handler for any fatal signal handled */
int i;
#ifdef HAVE_SIGACTION
struct sigaction action;
struct sigaction action;
for ( i=0; SDL_fatal_signals[i]; ++i ) {
sigaction(SDL_fatal_signals[i], NULL, &action);
if ( action.sa_handler == SDL_Parachute ) {
action.sa_handler = SIG_DFL;
sigaction(SDL_fatal_signals[i], &action, NULL);
}
}
for (i = 0; SDL_fatal_signals[i]; ++i) {
sigaction(SDL_fatal_signals[i], NULL, &action);
if (action.sa_handler == SDL_Parachute) {
action.sa_handler = SIG_DFL;
sigaction(SDL_fatal_signals[i], &action, NULL);
}
}
#else
void (*ohandler)(int);
void (*ohandler) (int);
for ( i=0; SDL_fatal_signals[i]; ++i ) {
ohandler = signal(SDL_fatal_signals[i], SIG_DFL);
if ( ohandler != SDL_Parachute ) {
signal(SDL_fatal_signals[i], ohandler);
}
}
for (i = 0; SDL_fatal_signals[i]; ++i) {
ohandler = signal(SDL_fatal_signals[i], SIG_DFL);
if (ohandler != SDL_Parachute) {
signal(SDL_fatal_signals[i], ohandler);
}
}
#endif /* HAVE_SIGACTION */
}
@ -121,14 +124,17 @@ void SDL_UninstallParachute(void)
/* No signals on this platform, nothing to do.. */
void SDL_InstallParachute(void)
void
SDL_InstallParachute(void)
{
return;
return;
}
void SDL_UninstallParachute(void)
void
SDL_UninstallParachute(void)
{
return;
return;
}
#endif /* HAVE_SIGNAL_H */
/* vi: set ts=4 sw=4 expandtab: */