Modularity: add infrastructure for very early initialization

This commit is contained in:
Casper Jeukendrup 2022-08-07 21:12:27 +02:00
parent 56e2ae7257
commit df63b08993
No known key found for this signature in database
GPG key ID: 6C571BEF59E722DD
5 changed files with 17 additions and 3 deletions

View file

@ -133,6 +133,14 @@ int AppShell::run(int argc, char** argv)
commandLine.apply();
framework::IApplication::RunMode runMode = muapplication()->runMode();
// ====================================================
// Setup modules: onPreInit
// ====================================================
globalModule.onPreInit(runMode);
for (mu::modularity::IModuleSetup* m : m_modules) {
m->onPreInit(runMode);
}
SplashScreen splashScreen;
if (runMode == framework::IApplication::RunMode::Editor) {
splashScreen.show();

View file

@ -68,7 +68,7 @@ void GlobalModule::registerExports()
ioc()->registerExport<ICryptographicHash>(moduleName(), new CryptographicHash());
}
void GlobalModule::onInit(const IApplication::RunMode& mode)
void GlobalModule::onPreInit(const IApplication::RunMode& mode)
{
mu::runtime::mainThreadId(); //! NOTE Needs only call
mu::runtime::setThreadName("main");

View file

@ -34,7 +34,7 @@ public:
std::string moduleName() const override;
void registerExports() override;
void onInit(const IApplication::RunMode& mode) override;
void onPreInit(const IApplication::RunMode& mode) override;
};
}

View file

@ -41,6 +41,7 @@ public:
virtual void registerResources() {}
virtual void registerUiTypes() {}
virtual void onPreInit(const framework::IApplication::RunMode& mode) { (void)mode; }
virtual void onInit(const framework::IApplication::RunMode& mode) { (void)mode; }
virtual void onAllInited(const framework::IApplication::RunMode& mode) { (void)mode; }
virtual void onDelayedInit() {}

View file

@ -69,13 +69,18 @@ void Environment::setup()
m->resolveImports();
}
globalModule.onInit(runMode);
globalModule.onPreInit(runMode);
//! NOTE Now we can use logger and profiler
for (mu::modularity::IModuleSetup* m : m_dependencyModules) {
m->onPreInit(runMode);
}
if (m_preInit) {
m_preInit();
}
globalModule.onInit(runMode);
for (mu::modularity::IModuleSetup* m : m_dependencyModules) {
m->onInit(runMode);
}