foxygit / doom Log in
commit 466e09152f9fd24dfb24fcdf6b95731ae9e0f4ed
Author:     Simon Howard <fraggle@gmail.com>
AuthorDate: Wed Sep 4 04:07:51 2013 +0000
Commit:     Simon Howard <fraggle@gmail.com>
CommitDate: Wed Sep 4 04:07:51 2013 +0000

    Don't show ENDOOM screen when aborting netgame startup (thanks Alexandre
    Xavier).

    Subversion-branch: /branches/v2-branch
    Subversion-revision: 2635
---
 src/doom/d_main.c    | 13 ++++++++++---
 src/heretic/d_main.c |  5 ++++-
 src/strife/d_main.c  | 12 ++++++++++--
 3 files changed, 24 insertions(+), 6 deletions(-)

diff --git a/src/doom/d_main.c b/src/doom/d_main.c
index 9f8b806c..eb36f4bb 100644
--- a/src/doom/d_main.c
+++ b/src/doom/d_main.c
@@ -128,6 +128,9 @@ boolean         storedemo;
 // "BFG Edition" version of doom2.wad does not include TITLEPIC.
 boolean         bfgedition;

+// If true, the main game loop has started.
+boolean         main_loop_started = false;
+
 char		wadfile[1024];		// primary wad file
 char		mapdir[1024];           // directory of development maps

@@ -416,7 +419,9 @@ void D_DoomLoop (void)
 {
     if (demorecording)
 	G_BeginRecording ();
-
+
+    main_loop_started = true;
+
     TryRunTics();

     I_SetWindowTitle(gamedescription);
@@ -1024,9 +1029,11 @@ static void D_Endoom(void)
     byte *endoom;

     // Don't show ENDOOM if we have it disabled, or we're running
-    // in screensaver or control test mode.
+    // in screensaver or control test mode. Only show it once the
+    // game has actually started.

-    if (!show_endoom || screensaver_mode || M_CheckParm("-testcontrols") > 0)
+    if (!show_endoom || !main_loop_started
+     || screensaver_mode || M_CheckParm("-testcontrols") > 0)
     {
         return;
     }
diff --git a/src/heretic/d_main.c b/src/heretic/d_main.c
index 8ca49ba6..6dc29cf7 100644
--- a/src/heretic/d_main.c
+++ b/src/heretic/d_main.c
@@ -79,6 +79,7 @@ int startmap;
 int UpdateState;
 static int graphical_startup = 1;
 static boolean using_graphical_startup;
+static boolean main_loop_started = false;
 boolean autostart;
 extern boolean automapactive;

@@ -254,6 +255,8 @@ void D_DoomLoop(void)
     I_InitGraphics();
     I_SetGrabMouseCallback(D_GrabMouseCallback);

+    main_loop_started = true;
+
     while (1)
     {
         // Frame syncronous IO operations
@@ -782,7 +785,7 @@ static void D_Endoom(void)

     // Disable ENDOOM?

-    if (!show_endoom || testcontrols)
+    if (!show_endoom || testcontrols || !main_loop_started)
     {
         return;
     }
diff --git a/src/strife/d_main.c b/src/strife/d_main.c
index cabd0505..51782b43 100644
--- a/src/strife/d_main.c
+++ b/src/strife/d_main.c
@@ -150,6 +150,10 @@ char		mapdir[1024];           // directory of development maps
 int             show_endoom = 1;
 int             graphical_startup = 1;

+// If true, startup has completed and the main game loop has started.
+
+static boolean main_loop_started = false;
+
 // fraggle 06/03/11 [STRIFE]: Unused config variable, preserved
 // for compatibility:

@@ -490,6 +494,8 @@ void D_DoomLoop (void)
     if (demorecording)
         G_BeginRecording ();

+    main_loop_started = true;
+
     TryRunTics();

     if (!showintro)
@@ -1038,9 +1044,11 @@ static void D_Endoom(void)
     byte *endoom;

     // Don't show ENDOOM if we have it disabled, or we're running
-    // in screensaver or control test mode.
+    // in screensaver or control test mode. Only show it once the
+    // game has actually started.
+

-    if (!show_endoom || screensaver_mode || testcontrols)
+    if (!show_endoom || !main_loop_started || screensaver_mode || testcontrols)
     {
         return;
     }