Reverse order of module deinitialization

To respect dependencies, deinitialize and destroy modules in reverse order to how they were added
This commit is contained in:
Emma Broman
2022-05-02 10:08:25 +02:00
parent 06ea668225
commit a8a33ed3a5

View File

@@ -94,19 +94,19 @@ void ModuleEngine::deinitialize() {
ZoneScoped
LDEBUG("Deinitializing modules");
for (std::unique_ptr<OpenSpaceModule>& 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<OpenSpaceModule>& 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<OpenSpaceModule>& 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");