diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-06-11 13:23:03 +0200 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-06-11 13:23:03 +0200 |
| commit | 5d0b6b0eab489e2010f6286647864889cae7422a (patch) | |
| tree | 63b6d199d7424c6a0e84611bf50a68c255c36127 /src/main.cpp | |
| parent | 2285ed32af2e7e89dfaaf9cdf75d1cc9b9b730d9 (diff) | |
Manually unload plugins to avoid issue with automatic unloading.
Diffstat (limited to 'src/main.cpp')
| -rw-r--r-- | src/main.cpp | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/main.cpp b/src/main.cpp index c7a2834c..46f2f0aa 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -560,6 +560,7 @@ int runApplication(MOApplication &application, SingleInstance &instance, }); log::debug("initializing core"); + std::unique_ptr<PluginContainer> pluginContainer; OrganizerCore organizer(settings); if (!organizer.bootstrap()) { reportError("failed to set up data paths"); @@ -582,11 +583,11 @@ int runApplication(MOApplication &application, SingleInstance &instance, } log::debug("initializing plugins"); - PluginContainer pluginContainer(&organizer); - pluginContainer.loadPlugins(); + pluginContainer = std::make_unique<PluginContainer>(&organizer); + pluginContainer->loadPlugins(); MOBase::IPluginGame *game = determineCurrentGame( - application.applicationDirPath(), settings, pluginContainer); + application.applicationDirPath(), settings, *pluginContainer); if (game == nullptr) { InstanceManager &instance = InstanceManager::instance(); @@ -723,7 +724,7 @@ int runApplication(MOApplication &application, SingleInstance &instance, QString apiKey; if (settings.nexus().apiKey(apiKey)) { - NexusInterface::instance(&pluginContainer)->getAccessManager()->apiCheck(apiKey); + NexusInterface::instance(pluginContainer.get())->getAccessManager()->apiCheck(apiKey); } log::debug("initializing tutorials"); @@ -741,9 +742,9 @@ int runApplication(MOApplication &application, SingleInstance &instance, { // scope to control lifetime of mainwindow // set up main window and its data structures - MainWindow mainWindow(settings, organizer, pluginContainer); + MainWindow mainWindow(settings, organizer, *pluginContainer); - NexusInterface::instance(&pluginContainer) + NexusInterface::instance(pluginContainer.get()) ->getAccessManager()->setTopLevelWidget(&mainWindow); QObject::connect(&mainWindow, SIGNAL(styleChanged(QString)), &application, @@ -766,13 +767,12 @@ int runApplication(MOApplication &application, SingleInstance &instance, res = application.exec(); mainWindow.close(); - NexusInterface::instance(&pluginContainer) + NexusInterface::instance(pluginContainer.get()) ->getAccessManager()->setTopLevelWidget(nullptr); } settings.geometry().resetIfNeeded(); return res; - } catch (const std::exception &e) { reportError(e.what()); } |
