diff --git a/sc2/src/uqm/cleanup.c b/sc2/src/uqm/cleanup.c index 5ac70b2bb..a7624455b 100644 --- a/sc2/src/uqm/cleanup.c +++ b/sc2/src/uqm/cleanup.c @@ -16,7 +16,6 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include "master.h" #include "nameref.h" #include "libs/reslib.h" #include "gamestr.h" @@ -34,21 +33,14 @@ // should be something like solarsys.h extern void FreeIPData (void); -static void UninitContexts (void); -static void UninitKernel (BOOLEAN ships); -static void UninitGameKernel (void); - void FreeKernel (void) { - UninitKernel (TRUE); - UninitContexts (); + UninitPlayerInput (); UninitResourceSystem (); - UninitPlayerInput (); - DestroyDrawable (ReleaseDrawable (Screen)); DestroyContext (ScreenContext); @@ -68,7 +60,7 @@ UninitContexts (void) } static void -UninitKernel (BOOLEAN ships) +UninitKernel (void) { UninitSpace (); @@ -83,9 +75,6 @@ UninitKernel (BOOLEAN ships) UninitQueue (&race_q[0]); UninitQueue (&race_q[1]); - if (ships) - FreeMasterShipList (); - ActivityFrame = 0; } @@ -98,17 +87,15 @@ FreeGameData (void) FreeHyperData (); } -static void +void UninitGameKernel (void) { - // XXX: this function is never called. Why not? (BUG?) if (ActivityFrame) { FreeGameData (); - UninitKernel (FALSE); + UninitKernel (); UninitContexts (); } } - diff --git a/sc2/src/uqm/setup.h b/sc2/src/uqm/setup.h index f75e90558..ccf6fa9a0 100644 --- a/sc2/src/uqm/setup.h +++ b/sc2/src/uqm/setup.h @@ -61,6 +61,7 @@ extern BYTE PlayerControl[]; BOOLEAN InitContexts (void); void UninitPlayerInput (void); BOOLEAN InitGameKernel (void); +void UninitGameKernel (void); extern BOOLEAN LoadKernel (int argc, char *argv[]); extern void FreeKernel (void); diff --git a/sc2/src/uqm/starcon.c b/sc2/src/uqm/starcon.c index f90a4c7e5..1a7e4ebb8 100644 --- a/sc2/src/uqm/starcon.c +++ b/sc2/src/uqm/starcon.c @@ -296,7 +296,8 @@ while (--ac > 0) } // CloseJournal (); - FreeGameData (); + UninitGameKernel (); + FreeMasterShipList (); FreeKernel (); MainExited = TRUE;