From 071416fde32fc52cd089327b1c95e918fba112af Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 28 Sep 2023 07:56:57 +0200 Subject: [PATCH] Meson: Move some code out of visible plugin setup Background for the activity here is that this plugin's setup activities take on my machine around 0.2s on Creator during Creator startup and I'd like to reduce that a bit. Change-Id: I880a0b5ce5c4dce52a041b6a3ef9dc3cef346adb Reviewed-by: Marcus Tillmanns --- .../mesonprojectplugin.cpp | 25 +------------------ .../toolssettingsaccessor.cpp | 19 +++++++++----- .../toolssettingsaccessor.h | 5 ++-- 3 files changed, 17 insertions(+), 32 deletions(-) diff --git a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp index cc1e3eb1e27..71ef57462b2 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp +++ b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp @@ -12,36 +12,20 @@ #include "toolssettingsaccessor.h" #include "toolssettingspage.h" -#include - #include #include #include #include -using namespace Core; using namespace ProjectExplorer; using namespace Utils; namespace MesonProjectManager::Internal { -class MesonProjectPluginPrivate : public QObject +class MesonProjectPluginPrivate { - Q_OBJECT public: - MesonProjectPluginPrivate() - { - MesonTools::setTools(m_toolsSettings.loadMesonTools(ICore::dialogParent())); - connect(ICore::instance(), - &ICore::saveSettingsRequested, - this, - &MesonProjectPluginPrivate::saveAll); - } - - ~MesonProjectPluginPrivate() {} - -private: ToolsSettingsPage m_toolslSettingsPage; ToolsSettingsAccessor m_toolsSettings; MesonBuildStepFactory m_buildStepFactory; @@ -50,11 +34,6 @@ private: MesonActionsManager m_actions; MachineFileManager m_machineFilesManager; SimpleTargetRunnerFactory m_mesonRunWorkerFactory{{m_runConfigurationFactory.runConfigurationId()}}; - - void saveAll() - { - m_toolsSettings.saveMesonTools(MesonTools::tools(), ICore::dialogParent()); - } }; MesonProjectPlugin::~MesonProjectPlugin() @@ -72,5 +51,3 @@ void MesonProjectPlugin::initialize() } } // MesonProjectManager::Internal - -#include "mesonprojectplugin.moc" diff --git a/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp b/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp index 3f5cdfa45a7..80e5274c481 100644 --- a/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp +++ b/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp @@ -6,6 +6,7 @@ #include "mesonpluginconstants.h" #include "mesonprojectmanagertr.h" +#include #include #include @@ -16,6 +17,7 @@ #include #include +using namespace Core; using namespace Utils; namespace MesonProjectManager { @@ -30,11 +32,16 @@ ToolsSettingsAccessor::ToolsSettingsAccessor() { setDocType("QtCreatorMesonTools"); setApplicationDisplayName(QGuiApplication::applicationDisplayName()); - setBaseFilePath(Core::ICore::userResourcePath(Constants::ToolsSettings::FILENAME)); + setBaseFilePath(ICore::userResourcePath(Constants::ToolsSettings::FILENAME)); + + MesonTools::setTools(loadMesonTools()); + + QObject::connect(ICore::instance(), &ICore::saveSettingsRequested, [this] { + saveMesonTools(MesonTools::tools()); + }); } -void ToolsSettingsAccessor::saveMesonTools(const std::vector &tools, - QWidget *parent) +void ToolsSettingsAccessor::saveMesonTools(const std::vector &tools) { using namespace Constants; Store data; @@ -51,13 +58,13 @@ void ToolsSettingsAccessor::saveMesonTools(const std::vector entry_count++; } data.insert(ToolsSettings::ENTRY_COUNT, entry_count); - saveSettings(data, parent); + saveSettings(data, ICore::dialogParent()); } -std::vector ToolsSettingsAccessor::loadMesonTools(QWidget *parent) +std::vector ToolsSettingsAccessor::loadMesonTools() { using namespace Constants; - auto data = restoreSettings(parent); + auto data = restoreSettings(ICore::dialogParent()); auto entry_count = data.value(ToolsSettings::ENTRY_COUNT, 0).toInt(); std::vector result; for (auto toolIndex = 0; toolIndex < entry_count; toolIndex++) { diff --git a/src/plugins/mesonprojectmanager/toolssettingsaccessor.h b/src/plugins/mesonprojectmanager/toolssettingsaccessor.h index 61cc505d3a7..10fce88099d 100644 --- a/src/plugins/mesonprojectmanager/toolssettingsaccessor.h +++ b/src/plugins/mesonprojectmanager/toolssettingsaccessor.h @@ -14,8 +14,9 @@ class ToolsSettingsAccessor final : public Utils::UpgradingSettingsAccessor { public: ToolsSettingsAccessor(); - void saveMesonTools(const std::vector &tools, QWidget *parent); - std::vector loadMesonTools(QWidget *parent); + + void saveMesonTools(const std::vector &tools); + std::vector loadMesonTools(); }; } // namespace Internal