From 0c3aed25497267b655794dfb4b3f8b72dfb01d13 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 6 Feb 2018 16:36:01 +0100 Subject: [PATCH] QbsProjectManager: Avoid use of global object pool Change-Id: I6cce96dafda1694c46a4302ae121f7c08a9c82d8 Reviewed-by: Christian Kandeler --- .../qbsprojectmanagerplugin.cpp | 31 ++++++++++++------- .../qbsprojectmanagerplugin.h | 9 +++--- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp index d95f54f03e3..d75efe0186b 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp +++ b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp @@ -65,7 +65,6 @@ #include #include -#include using namespace ProjectExplorer; @@ -84,11 +83,31 @@ static QbsProject *currentEditorProject() return doc ? qobject_cast(SessionManager::projectForFile(doc->filePath())) : nullptr; } +class QbsProjectManagerPluginPrivate +{ +public: + QbsManager manager; + QbsBuildConfigurationFactory buildConfigFactory; + QbsBuildStepFactory buildStepFactory; + QbsCleanStepFactory cleanStepFactory; + QbsInstallStepFactory installStepFactory; + QbsDeployConfigurationFactory deployConfigFactory; + QbsRunConfigurationFactory runConfigFactory; + QbsProfilesSettingsPage profilesSetttingsPage; +}; + +QbsProjectManagerPlugin::~QbsProjectManagerPlugin() +{ + delete d; +} + bool QbsProjectManagerPlugin::initialize(const QStringList &arguments, QString *errorMessage) { Q_UNUSED(arguments); Q_UNUSED(errorMessage); + d = new QbsProjectManagerPluginPrivate; + const Core::Context projectContext(::QbsProjectManager::Constants::PROJECT_ID); Core::FileIconProvider::registerIconOverlayForSuffix(ProjectExplorer::Constants::FILEOVERLAY_QT, "qbs"); @@ -97,16 +116,6 @@ bool QbsProjectManagerPlugin::initialize(const QStringList &arguments, QString * ProjectManager::registerProjectType(QmlJSTools::Constants::QBS_MIMETYPE); KitManager::registerKitInformation(new QbsKitInformation); - //create and register objects - addAutoReleasedObject(new QbsManager); - addAutoReleasedObject(new QbsBuildConfigurationFactory); - addAutoReleasedObject(new QbsBuildStepFactory); - addAutoReleasedObject(new QbsCleanStepFactory); - addAutoReleasedObject(new QbsInstallStepFactory); - addAutoReleasedObject(new QbsDeployConfigurationFactory); - addAutoReleasedObject(new QbsRunConfigurationFactory); - addAutoReleasedObject(new QbsProfilesSettingsPage); - //menus // Build Menu: Core::ActionContainer *mbuild = diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.h b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.h index 9fa1914a6c8..99aa566eff6 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.h +++ b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.h @@ -35,18 +35,18 @@ namespace QbsProjectManager { namespace Internal { class QbsProject; +class QbsProjectManagerPluginPrivate; class QbsProjectManagerPlugin : public ExtensionSystem::IPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "QbsProjectManager.json") -public: - bool initialize(const QStringList &arguments, QString *errorMessage); + ~QbsProjectManagerPlugin() final; - void extensionsInitialized(); + bool initialize(const QStringList &arguments, QString *errorMessage) final; + void extensionsInitialized() final; -private: void projectWasAdded(ProjectExplorer::Project *project); void projectChanged(); @@ -84,6 +84,7 @@ private: void runStepsForProducts(QbsProject *project, const QStringList &products, const QList &stepTypes); + QbsProjectManagerPluginPrivate *d = nullptr; QAction *m_reparseQbs = nullptr; QAction *m_reparseQbsCtx = nullptr; QAction *m_buildFileCtx = nullptr;