diff --git a/radiantcore/Radiant.cpp b/radiantcore/Radiant.cpp index 5d14375c38..09dff3c175 100644 --- a/radiantcore/Radiant.cpp +++ b/radiantcore/Radiant.cpp @@ -31,8 +31,7 @@ Radiant::Radiant(IApplicationContext& context) : // Attach the logfile to the logwriter createLogFile(); - _moduleRegistry.reset(new module::ModuleRegistry); - _moduleRegistry->setContext(_context); + _moduleRegistry.reset(new module::ModuleRegistry(_context)); _languageManager.reset(new language::LanguageManager); #if 0 diff --git a/radiantcore/modulesystem/ModuleRegistry.cpp b/radiantcore/modulesystem/ModuleRegistry.cpp index 93b56fead6..6ee1f390fa 100644 --- a/radiantcore/modulesystem/ModuleRegistry.cpp +++ b/radiantcore/modulesystem/ModuleRegistry.cpp @@ -12,10 +12,10 @@ namespace module { -ModuleRegistry::ModuleRegistry() : +ModuleRegistry::ModuleRegistry(const IApplicationContext& ctx) : + _context(ctx), _modulesInitialised(false), _modulesShutdown(false), - _context(nullptr), _loader(new ModuleLoader(*this)) { rMessage() << "ModuleRegistry instantiated." << std::endl; @@ -126,8 +126,7 @@ void ModuleRegistry::initialiseModuleRecursive(const std::string& name) _progress); // Initialise the module itself, now that the dependencies are ready - assert(_context); - module->initialiseModule(*_context); + module->initialiseModule(_context); } void ModuleRegistry::initialiseCoreModule() @@ -145,7 +144,7 @@ void ModuleRegistry::initialiseCoreModule() // We assume that the core module doesn't have any dependencies assert(moduleIter->second->getDependencies().empty()); - moduleIter->second->initialiseModule(*_context); + moduleIter->second->initialiseModule(_context); _uninitialisedModules.erase(coreModuleName); } @@ -162,7 +161,7 @@ void ModuleRegistry::loadAndInitialiseModules() rMessage() << "ModuleRegistry Compatibility Level is " << getCompatibilityLevel() << std::endl; // Invoke the ModuleLoad routine to load the DLLs from modules/ and plugins/ - _loader->loadModules(_context->getLibraryPath()); + _loader->loadModules(_context.getLibraryPath()); _progress = 0.1f; _sigModuleInitialisationProgress.emit(_("Initialising Modules"), _progress); @@ -239,8 +238,7 @@ RegisterableModulePtr ModuleRegistry::getModule(const std::string& name) const { const IApplicationContext& ModuleRegistry::getApplicationContext() const { - assert(_context); - return *_context; + return _context; } applog::ILogWriter& ModuleRegistry::getApplicationLogWriter() diff --git a/radiantcore/modulesystem/ModuleRegistry.h b/radiantcore/modulesystem/ModuleRegistry.h index cd1d466f9b..4c1cf8057b 100644 --- a/radiantcore/modulesystem/ModuleRegistry.h +++ b/radiantcore/modulesystem/ModuleRegistry.h @@ -20,6 +20,9 @@ class ModuleRegistry : public IModuleRegistry { private: + // application context + const IApplicationContext& _context; + typedef std::map ModulesMap; // This is where the uninitialised modules go after registration @@ -34,9 +37,6 @@ class ModuleRegistry : // Set to TRUE after all modules have been shutdown bool _modulesShutdown; - // Pointer to the application context - IApplicationContext* _context; - // For progress meter in the splash screen float _progress; @@ -50,7 +50,7 @@ class ModuleRegistry : std::unique_ptr _loader; public: - ModuleRegistry(); + ModuleRegistry(const IApplicationContext& ctx); ~ModuleRegistry(); @@ -81,11 +81,6 @@ class ModuleRegistry : std::size_t getCompatibilityLevel() const override; - void setContext(IApplicationContext& context) - { - _context = &context; - } - // Returns a list of modules std::string getModuleList(const std::string& separator = "\n");