diff --git a/src/modules/userinterface/legacymenu/legacymenu.cpp b/src/modules/userinterface/legacymenu/legacymenu.cpp index de0ea038..c6f0b639 100644 --- a/src/modules/userinterface/legacymenu/legacymenu.cpp +++ b/src/modules/userinterface/legacymenu/legacymenu.cpp @@ -96,7 +96,7 @@ void LegacyMenu::shutdown() unloadCarsGraphics(); shutdownGraphicsView(); unloadTrackGraphics(); - shutdownGraphics(); + shutdownGraphics(/*bUnloadModule=*/true); } } @@ -430,22 +430,25 @@ void LegacyMenu::shutdownGraphicsView() } } -void LegacyMenu::shutdownGraphics() +void LegacyMenu::shutdownGraphics(bool bUnloadModule) { // Do nothing if the module has already been unloaded. if (!_piGraphicsEngine) return; - // Unload the graphics module. - GfModule* pmodGrEngine = dynamic_cast(_piGraphicsEngine); - GfModule::unload(pmodGrEngine); + if (bUnloadModule) + { + // Unload the graphics module. + GfModule* pmodGrEngine = dynamic_cast(_piGraphicsEngine); + GfModule::unload(pmodGrEngine); - // And remember it was. - _piGraphicsEngine = 0; + // And remember it was. + _piGraphicsEngine = 0; + } // A little consistency check. if (_bfGraphicsState) - GfLogWarning("Graphics engine shutdown procedure not smartly completed (state = 0x%x)\n", + GfLogWarning("Graphics shutdown procedure not smartly completed (state = 0x%x)\n", _bfGraphicsState); } diff --git a/src/modules/userinterface/legacymenu/legacymenu.h b/src/modules/userinterface/legacymenu/legacymenu.h index 7139823f..80e3f75b 100644 --- a/src/modules/userinterface/legacymenu/legacymenu.h +++ b/src/modules/userinterface/legacymenu/legacymenu.h @@ -52,7 +52,7 @@ extern "C" int LEGACYMENU_API closeGfModule(); // The module main class (inherits GfModule, and implements IUserInterface). class LEGACYMENU_API LegacyMenu : public GfModule, public IUserInterface { - // Implementation of IUserInterface. +// Implementation of IUserInterface. public: //! Activation of the user interface (splash if any, main menu ...). @@ -97,6 +97,7 @@ public: // Setter for the race engine. virtual void setRaceEngine(IRaceEngine& raceEngine); +// Other services. public: // Accessor to the singleton. @@ -107,7 +108,7 @@ public: // Graphics engine control. void redrawGraphicsView(struct Situation* pSituation); - void shutdownGraphics(); + void shutdownGraphics(bool bUnloadModule = true); // Loading screen management. virtual void activateLoadingScreen(); diff --git a/src/modules/userinterface/legacymenu/racescreens/raceselectmenu.cpp b/src/modules/userinterface/legacymenu/racescreens/raceselectmenu.cpp index 6787dd29..a1190cc5 100644 --- a/src/modules/userinterface/legacymenu/racescreens/raceselectmenu.cpp +++ b/src/modules/userinterface/legacymenu/racescreens/raceselectmenu.cpp @@ -61,7 +61,7 @@ rmOnRaceSelectShutdown(void *prevMenu) LmRaceEngine().cleanup(); - LegacyMenu::self().shutdownGraphics(); + LegacyMenu::self().shutdownGraphics(/*bUnloadModule=*/true); }