foxygit / doom Log in
commit fa32d12bfa647565cce1b2f9e25ad7d7b0a1d4fc
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Wed Jun 21 19:08:20 2006 +0000
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Wed Jun 21 19:08:20 2006 +0000

    Let the SDL parachute catch crashes and shut down properly. Don't crash
    after playing demos.

    Subversion-branch: /trunk/chocolate-doom
    Subversion-revision: 562
---
 src/g_game.c | 18 ++++++++++++------
 src/i_main.c | 22 ++--------------------
 2 files changed, 14 insertions(+), 26 deletions(-)

diff --git a/src/g_game.c b/src/g_game.c
index 6fe36116..e603ee63 100644
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -1,7 +1,7 @@
 // Emacs style mode select   -*- C++ -*-
 //-----------------------------------------------------------------------------
 //
-// $Id: g_game.c 475 2006-05-05 19:49:34Z fraggle $
+// $Id: g_game.c 562 2006-06-21 19:08:20Z fraggle $
 //
 // Copyright(C) 1993-1996 Id Software, Inc.
 // Copyright(C) 2005 Simon Howard
@@ -134,7 +134,7 @@


 static const char
-rcsid[] = "$Id: g_game.c 475 2006-05-05 19:49:34Z fraggle $";
+rcsid[] = "$Id: g_game.c 562 2006-06-21 19:08:20Z fraggle $";

 #include <string.h>
 #include <stdlib.h>
@@ -1889,15 +1889,16 @@ boolean G_CheckDemoStatus (void)
         realtics = endtime - starttime;
         fps = ((float) gametic * 35) / realtics;

+        // Prevent recursive calls
+        timingdemo = false;
+        demoplayback = false;
+
 	I_Error ("timed %i gametics in %i realtics (%f fps)",
                  gametic, realtics, fps);
     }

     if (demoplayback)
     {
-	if (singledemo)
-	    I_Quit ();
-
 	Z_ChangeTag (demobuffer, PU_CACHE);
 	demoplayback = false;
 	netdemo = false;
@@ -1908,7 +1909,12 @@ boolean G_CheckDemoStatus (void)
 	fastparm = false;
 	nomonsters = false;
 	consoleplayer = 0;
-	D_AdvanceDemo ();
+
+        if (singledemo)
+            I_Quit ();
+        else
+            D_AdvanceDemo ();
+
 	return true;
     }

diff --git a/src/i_main.c b/src/i_main.c
index 540314ae..5fad27f3 100644
--- a/src/i_main.c
+++ b/src/i_main.c
@@ -1,7 +1,7 @@
 // Emacs style mode select   -*- C++ -*-
 //-----------------------------------------------------------------------------
 //
-// $Id: i_main.c 424 2006-03-18 21:22:09Z fraggle $
+// $Id: i_main.c 562 2006-06-21 19:08:20Z fraggle $
 //
 // Copyright(C) 1993-1996 Id Software, Inc.
 // Copyright(C) 2005 Simon Howard
@@ -48,7 +48,7 @@
 //-----------------------------------------------------------------------------

 static const char
-rcsid[] = "$Id: i_main.c 424 2006-03-18 21:22:09Z fraggle $";
+rcsid[] = "$Id: i_main.c 562 2006-06-21 19:08:20Z fraggle $";

 #include <SDL.h>

@@ -59,11 +59,6 @@ rcsid[] = "$Id: i_main.c 424 2006-03-18 21:22:09Z fraggle $";
 #include "m_argv.h"
 #include "d_main.h"

-void SignalHandler(int signum)
-{
-    I_Error("Aborting due to signal %i\n", signum);
-}
-
 int main(int argc, char **argv)
 {

@@ -72,19 +67,6 @@ int main(int argc, char **argv)
     myargc = argc;
     myargv = argv;

-    signal(SIGSEGV, SignalHandler);
-    signal(SIGTERM, SignalHandler);
-    signal(SIGILL, SignalHandler);
-    signal(SIGINT, SignalHandler);
-    signal(SIGFPE, SignalHandler);
-    signal(SIGABRT, SignalHandler);
-#ifdef SIGHUP
-    signal(SIGHUP, SignalHandler);
-#endif
-#ifdef SIGPIPE
-    signal(SIGHUP, SignalHandler);
-#endif
-
     // start doom

     D_DoomMain ();