diff options
author | Simon Howard | 2006-03-16 22:17:45 +0000 |
---|---|---|
committer | Simon Howard | 2006-03-16 22:17:45 +0000 |
commit | 9f1245d39e792a9c37d0b7e06184dfff54394154 (patch) | |
tree | 8d1894a3696d41909b2ce33ff5ae051afd5a10a7 /src | |
parent | 3b8e76e7363712827be27729a79b0d3139a2ff97 (diff) | |
download | chocolate-doom-9f1245d39e792a9c37d0b7e06184dfff54394154.tar.gz chocolate-doom-9f1245d39e792a9c37d0b7e06184dfff54394154.tar.bz2 chocolate-doom-9f1245d39e792a9c37d0b7e06184dfff54394154.zip |
Better fix for the intermission screen crash. Don't call WI_End until
after we change to gamestate != GS_INTERMISSION
Subversion-branch: /trunk/chocolate-doom
Subversion-revision: 422
Diffstat (limited to 'src')
-rw-r--r-- | src/g_game.c | 16 | ||||
-rw-r--r-- | src/wi_stuff.c | 22 | ||||
-rw-r--r-- | src/wi_stuff.h | 6 |
3 files changed, 25 insertions, 19 deletions
diff --git a/src/g_game.c b/src/g_game.c index e6c24f00..b8807da1 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -1,7 +1,7 @@ // Emacs style mode select -*- C++ -*- //----------------------------------------------------------------------------- // -// $Id: g_game.c 405 2006-03-02 00:57:25Z fraggle $ +// $Id: g_game.c 422 2006-03-16 22:17:45Z 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 405 2006-03-02 00:57:25Z fraggle $"; +rcsid[] = "$Id: g_game.c 422 2006-03-16 22:17:45Z fraggle $"; #include <string.h> #include <stdlib.h> @@ -207,6 +207,9 @@ void G_DoVictory (void); void G_DoWorldDone (void); void G_DoSaveGame (void); +// Gamestate the last time G_Ticker was called. + +gamestate_t oldgamestate; gameaction_t gameaction; gamestate_t gamestate; @@ -909,6 +912,15 @@ void G_Ticker (void) } } } + + // Have we just finished displaying an intermission screen? + + if (oldgamestate == GS_INTERMISSION && gamestate != GS_INTERMISSION) + { + WI_End(); + } + + oldgamestate = gamestate; // do main actions switch (gamestate) diff --git a/src/wi_stuff.c b/src/wi_stuff.c index 41e6e193..75e2ff9e 100644 --- a/src/wi_stuff.c +++ b/src/wi_stuff.c @@ -1,7 +1,7 @@ // Emacs style mode select -*- C++ -*- //----------------------------------------------------------------------------- // -// $Id: wi_stuff.c 421 2006-03-16 21:46:59Z fraggle $ +// $Id: wi_stuff.c 422 2006-03-16 22:17:45Z fraggle $ // // Copyright(C) 1993-1996 Id Software, Inc. // Copyright(C) 2005 Simon Howard @@ -44,7 +44,7 @@ //----------------------------------------------------------------------------- static const char -rcsid[] = "$Id: wi_stuff.c 421 2006-03-16 21:46:59Z fraggle $"; +rcsid[] = "$Id: wi_stuff.c 422 2006-03-16 22:17:45Z fraggle $"; #include <stdio.h> @@ -748,11 +748,6 @@ void WI_End(void) { void WI_unloadData(void); WI_unloadData(); - - // Set state to finished. This prevents trying to draw the screen - // again using any of the patches we have now unloaded. - - state = FinishedIntermission; } void WI_initNoState(void) @@ -768,7 +763,11 @@ void WI_updateNoState(void) { if (!--cnt) { - WI_End(); + // Don't call WI_End yet. G_WorldDone doesnt immediately + // change gamestate, so WI_Drawer is still going to get + // run until that happens. If we do that after WI_End + // (which unloads all the graphics), we're in trouble. + //WI_End(); G_WorldDone(); } @@ -1559,9 +1558,6 @@ void WI_Ticker(void) case NoState: WI_updateNoState(); break; - - case FinishedIntermission: - break; } } @@ -1822,9 +1818,6 @@ void WI_Drawer (void) case NoState: WI_drawNoState(); break; - - case FinishedIntermission: - break; } } @@ -1873,7 +1866,6 @@ void WI_initVariables(wbstartstruct_t* wbstartstruct) void WI_Start(wbstartstruct_t* wbstartstruct) { - WI_initVariables(wbstartstruct); WI_loadData(); diff --git a/src/wi_stuff.h b/src/wi_stuff.h index da14002f..5368de76 100644 --- a/src/wi_stuff.h +++ b/src/wi_stuff.h @@ -1,7 +1,7 @@ // Emacs style mode select -*- C++ -*- //----------------------------------------------------------------------------- // -// $Id: wi_stuff.h 421 2006-03-16 21:46:59Z fraggle $ +// $Id: wi_stuff.h 422 2006-03-16 22:17:45Z fraggle $ // // Copyright(C) 1993-1996 Id Software, Inc. // Copyright(C) 2005 Simon Howard @@ -40,7 +40,6 @@ typedef enum NoState = -1, StatCount, ShowNextLoc, - FinishedIntermission, } stateenum_t; // Called by main loop, animate the intermission. @@ -53,6 +52,9 @@ void WI_Drawer (void); // Setup for an intermission screen. void WI_Start(wbstartstruct_t* wbstartstruct); +// Shut down the intermission screen +void WI_End(void); + #endif //----------------------------------------------------------------------------- // |