From a8a33ed3a503bf7dc4dbda500258affd52187318 Mon Sep 17 00:00:00 2001 From: Emma Broman Date: Mon, 2 May 2022 10:08:25 +0200 Subject: [PATCH] Reverse order of module deinitialization To respect dependencies, deinitialize and destroy modules in reverse order to how they were added --- src/engine/moduleengine.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/engine/moduleengine.cpp b/src/engine/moduleengine.cpp index 0d57ca904e..705a5a3758 100644 --- a/src/engine/moduleengine.cpp +++ b/src/engine/moduleengine.cpp @@ -94,19 +94,19 @@ void ModuleEngine::deinitialize() { ZoneScoped LDEBUG("Deinitializing modules"); - for (std::unique_ptr& m : _modules) { - LDEBUG(fmt::format("Deinitializing module '{}'", m->identifier())); - m->deinitialize(); - } + for (auto mIt = _modules.rbegin(); mIt != _modules.rend(); ++mIt) { + LDEBUG(fmt::format("Deinitializing module '{}'", (*mIt)->identifier())); + (*mIt)->deinitialize(); + } LDEBUG("Finished deinitializing modules"); - for (std::unique_ptr& m : _modules) { - LDEBUG(fmt::format("Destroying module '{}'", m->identifier())); - m = nullptr; + for (auto mIt = _modules.rbegin(); mIt != _modules.rend(); ++mIt) { + LDEBUG(fmt::format("Destroying module '{}'", (*mIt)->identifier())); + (*mIt) = nullptr; } - LDEBUG("Finished destroying modules"); + _modules.clear(); } @@ -114,9 +114,9 @@ void ModuleEngine::deinitializeGL() { ZoneScoped LDEBUG("Deinitializing OpenGL of modules"); - for (std::unique_ptr& m : _modules) { - LDEBUG(fmt::format("Deinitializing OpenGL of module '{}'", m->identifier())); - m->deinitializeGL(); + for (auto mIt = _modules.rbegin(); mIt != _modules.rend(); ++mIt) { + LDEBUG(fmt::format("Deinitializing OpenGL of module '{}'", (*mIt)->identifier())); + (*mIt)->deinitializeGL(); } LDEBUG("Finished deinitializing OpenGL of modules");