mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-27 21:01:04 +00:00
Move everything to i_system.c
This also simplifies things; SDL isn't initialized in the parent process.
This commit is contained in:
parent
2b837726eb
commit
9efe4d8445
4 changed files with 57 additions and 60 deletions
|
@ -136,10 +136,6 @@
|
||||||
#define LOGMESSAGES // write message in log.txt
|
#define LOGMESSAGES // write message in log.txt
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (defined (__unix__) && !defined (_MSDOS)) || defined (UNIXCOMMON)
|
|
||||||
#define NEWSIGNALHANDLER
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef LOGMESSAGES
|
#ifdef LOGMESSAGES
|
||||||
extern FILE *logstream;
|
extern FILE *logstream;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -92,10 +92,6 @@ ticcmd_t *I_BaseTiccmd4(void);
|
||||||
*/
|
*/
|
||||||
void I_Quit(void) FUNCNORETURN;
|
void I_Quit(void) FUNCNORETURN;
|
||||||
|
|
||||||
/** \brief Print a message and text box about a signal that was raised.
|
|
||||||
*/
|
|
||||||
void I_ReportSignal(int num, int coredumped);
|
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
EvilForce = -1,
|
EvilForce = -1,
|
||||||
|
|
|
@ -26,11 +26,6 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef NEWSIGNALHANDLER
|
|
||||||
#include <errno.h>
|
|
||||||
#include <sys/wait.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAVE_SDL
|
#ifdef HAVE_SDL
|
||||||
|
|
||||||
#ifdef HAVE_TTF
|
#ifdef HAVE_TTF
|
||||||
|
@ -163,52 +158,6 @@ int main(int argc, char **argv)
|
||||||
MakeCodeWritable();
|
MakeCodeWritable();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef NEWSIGNALHANDLER
|
|
||||||
switch (fork())
|
|
||||||
{
|
|
||||||
case -1:
|
|
||||||
I_Error(
|
|
||||||
"Error setting up signal reporting: fork(): %s\n",
|
|
||||||
strerror(errno)
|
|
||||||
);
|
|
||||||
break;
|
|
||||||
case 0:
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
int status;
|
|
||||||
int signum;
|
|
||||||
if (wait(&status) == -1)
|
|
||||||
{
|
|
||||||
I_Error(
|
|
||||||
"Error setting up signal reporting: fork(): %s\n",
|
|
||||||
strerror(errno)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (WIFSIGNALED (status))
|
|
||||||
{
|
|
||||||
signum = WTERMSIG (status);
|
|
||||||
#ifdef WCOREDUMP
|
|
||||||
I_ReportSignal(signum, WCOREDUMP (status));
|
|
||||||
#else
|
|
||||||
I_ReportSignal(signum, 0);
|
|
||||||
#endif
|
|
||||||
status = 128 + signum;
|
|
||||||
}
|
|
||||||
else if (WIFEXITED (status))
|
|
||||||
{
|
|
||||||
status = WEXITSTATUS (status);
|
|
||||||
}
|
|
||||||
|
|
||||||
I_ShutdownSystem();
|
|
||||||
exit(status);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif/*NEWSIGNALHANDLER*/
|
|
||||||
|
|
||||||
// startup SRB2
|
// startup SRB2
|
||||||
CONS_Printf("Setting up SRB2Kart...\n");
|
CONS_Printf("Setting up SRB2Kart...\n");
|
||||||
D_SRB2Main();
|
D_SRB2Main();
|
||||||
|
|
|
@ -102,6 +102,12 @@ typedef LPVOID (WINAPI *p_MapViewOfFile) (HANDLE, DWORD, DWORD, DWORD, SIZE_T);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if (defined (__unix__) && !defined (_MSDOS)) || defined (UNIXCOMMON)
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
#define NEWSIGNALHANDLER
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef NOMUMBLE
|
#ifndef NOMUMBLE
|
||||||
#ifdef __linux__ // need -lrt
|
#ifdef __linux__ // need -lrt
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
@ -246,7 +252,7 @@ SDL_bool framebuffer = SDL_FALSE;
|
||||||
|
|
||||||
UINT8 keyboard_started = false;
|
UINT8 keyboard_started = false;
|
||||||
|
|
||||||
void I_ReportSignal(int num, int coredumped)
|
static void I_ReportSignal(int num, int coredumped)
|
||||||
{
|
{
|
||||||
//static char msg[] = "oh no! back to reality!\r\n";
|
//static char msg[] = "oh no! back to reality!\r\n";
|
||||||
const char * sigmsg;
|
const char * sigmsg;
|
||||||
|
@ -3043,6 +3049,53 @@ void I_Sleep(void)
|
||||||
SDL_Delay(cv_sleep.value);
|
SDL_Delay(cv_sleep.value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef NEWSIGNALHANDLER
|
||||||
|
static void I_Fork(void)
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
int signum;
|
||||||
|
switch (fork())
|
||||||
|
{
|
||||||
|
case -1:
|
||||||
|
I_Error(
|
||||||
|
"Error setting up signal reporting: fork(): %s\n",
|
||||||
|
strerror(errno)
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (wait(&status))
|
||||||
|
{
|
||||||
|
I_Error(
|
||||||
|
"Error setting up signal reporting: fork(): %s\n",
|
||||||
|
strerror(errno)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (WIFSIGNALED (status))
|
||||||
|
{
|
||||||
|
signum = WTERMSIG (status);
|
||||||
|
#ifdef WCOREDUMP
|
||||||
|
I_ReportSignal(signum, WCOREDUMP (status));
|
||||||
|
#else
|
||||||
|
I_ReportSignal(signum, 0);
|
||||||
|
#endif
|
||||||
|
status = 128 + signum;
|
||||||
|
}
|
||||||
|
else if (WIFEXITED (status))
|
||||||
|
{
|
||||||
|
status = WEXITSTATUS (status);
|
||||||
|
}
|
||||||
|
|
||||||
|
I_ShutdownSystem();
|
||||||
|
exit(status);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif/*NEWSIGNALHANDLER*/
|
||||||
|
|
||||||
INT32 I_StartupSystem(void)
|
INT32 I_StartupSystem(void)
|
||||||
{
|
{
|
||||||
SDL_version SDLcompiled;
|
SDL_version SDLcompiled;
|
||||||
|
@ -3050,6 +3103,9 @@ INT32 I_StartupSystem(void)
|
||||||
SDL_VERSION(&SDLcompiled)
|
SDL_VERSION(&SDLcompiled)
|
||||||
SDL_GetVersion(&SDLlinked);
|
SDL_GetVersion(&SDLlinked);
|
||||||
I_StartupConsole();
|
I_StartupConsole();
|
||||||
|
#ifdef NEWSIGNALHANDLER
|
||||||
|
I_Fork();
|
||||||
|
#endif
|
||||||
I_OutputMsg("Compiled for SDL version: %d.%d.%d\n",
|
I_OutputMsg("Compiled for SDL version: %d.%d.%d\n",
|
||||||
SDLcompiled.major, SDLcompiled.minor, SDLcompiled.patch);
|
SDLcompiled.major, SDLcompiled.minor, SDLcompiled.patch);
|
||||||
I_OutputMsg("Linked with SDL version: %d.%d.%d\n",
|
I_OutputMsg("Linked with SDL version: %d.%d.%d\n",
|
||||||
|
|
Loading…
Reference in a new issue