1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Some globals (un-)init fixes

This commit is contained in:
sfan5 2024-04-11 13:54:09 +02:00
parent 2af5191070
commit d8190e1c5f
16 changed files with 58 additions and 62 deletions

View file

@ -47,11 +47,6 @@ gui::IGUIEnvironment *guienv = nullptr;
gui::IGUIStaticText *guiroot = nullptr;
MainMenuManager g_menumgr;
bool isMenuActive()
{
return g_menumgr.menuCount() != 0;
}
// Passed to menus to allow disconnecting and exiting
MainGameCallback *g_gamecallback = nullptr;
@ -74,13 +69,20 @@ ClientLauncher::~ClientLauncher()
{
delete input;
delete receiver;
delete g_fontengine;
g_fontengine = nullptr;
delete g_gamecallback;
g_gamecallback = nullptr;
guiroot = nullptr;
guienv = nullptr;
assert(g_menumgr.menuCount() == 0);
delete m_rendering_engine;
// delete event receiver only after all Irrlicht stuff is gone
delete receiver;
#if USE_SOUND
g_sound_manager_singleton.reset();
#endif
@ -103,10 +105,8 @@ bool ClientLauncher::run(GameStartData &start_data, const Settings &cmd_args)
g_sound_manager_singleton = createSoundManagerSingleton();
#endif
if (!init_engine()) {
errorstream << "Could not initialize game engine." << std::endl;
if (!init_engine())
return false;
}
if (!m_rendering_engine->get_video_driver()) {
errorstream << "Could not initialize video driver." << std::endl;
@ -129,7 +129,6 @@ bool ClientLauncher::run(GameStartData &start_data, const Settings &cmd_args)
init_guienv(guienv);
g_fontengine = new FontEngine(guienv);
FATAL_ERROR_IF(!g_fontengine, "Font engine creation failed.");
// Create the menu clouds
// This is only global so it can be used by RenderingEngine::draw_load_screen().
@ -301,8 +300,12 @@ void ClientLauncher::init_args(GameStartData &start_data, const Settings &cmd_ar
bool ClientLauncher::init_engine()
{
receiver = new MyEventReceiver();
m_rendering_engine = new RenderingEngine(receiver);
return m_rendering_engine->get_raw_device() != nullptr;
try {
m_rendering_engine = new RenderingEngine(receiver);
} catch (std::exception &e) {
errorstream << e.what() << std::endl;
}
return !!m_rendering_engine;
}
void ClientLauncher::init_input()