From c4c561556d9ac13ff206c988a1f7776f140ef975 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 17 Nov 2023 10:19:48 +0100 Subject: [PATCH] BareMetal: Move DebugServerProviderManager closer to new setup system Change-Id: Ic8029b0436d4c0e86e0f707632139a2074b296eb Reviewed-by: Jarek Kobus --- src/plugins/baremetal/baremetalplugin.cpp | 19 +------------------ src/plugins/baremetal/baremetalplugin.h | 4 ---- .../baremetal/debugserverprovidermanager.cpp | 17 +++++++++++++---- .../baremetal/debugserverprovidermanager.h | 9 ++++----- 4 files changed, 18 insertions(+), 31 deletions(-) diff --git a/src/plugins/baremetal/baremetalplugin.cpp b/src/plugins/baremetal/baremetalplugin.cpp index 09e17fcd6bc..0f551623185 100644 --- a/src/plugins/baremetal/baremetalplugin.cpp +++ b/src/plugins/baremetal/baremetalplugin.cpp @@ -4,11 +4,9 @@ #include "baremetalplugin.h" -#include "baremetalconstants.h" #include "baremetaldebugsupport.h" #include "baremetaldevice.h" #include "baremetalrunconfiguration.h" -#include "baremetaltr.h" #include "debugserverprovidermanager.h" @@ -18,25 +16,10 @@ namespace BareMetal::Internal { -// BareMetalPluginPrivate - -class BareMetalPluginPrivate -{ -public: - DebugServerProviderManager debugServerProviderManager; -}; - // BareMetalPlugin -BareMetalPlugin::~BareMetalPlugin() -{ - delete d; -} - void BareMetalPlugin::initialize() { - d = new BareMetalPluginPrivate; - setupBareMetalDevice(); setupIarToolChain(); @@ -49,7 +32,7 @@ void BareMetalPlugin::initialize() void BareMetalPlugin::extensionsInitialized() { - DebugServerProviderManager::instance()->restoreProviders(); + setupDebugServerProviderManager(this); } } // BareMetal::Internal diff --git a/src/plugins/baremetal/baremetalplugin.h b/src/plugins/baremetal/baremetalplugin.h index cbad40df5c6..b529256b258 100644 --- a/src/plugins/baremetal/baremetalplugin.h +++ b/src/plugins/baremetal/baremetalplugin.h @@ -13,13 +13,9 @@ class BareMetalPlugin final : public ExtensionSystem::IPlugin Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "BareMetal.json") - ~BareMetalPlugin() final; - void initialize() final; void extensionsInitialized() final; - class BareMetalPluginPrivate *d = nullptr; - #ifdef WITH_TESTS private slots: void testIarOutputParsers_data(); diff --git a/src/plugins/baremetal/debugserverprovidermanager.cpp b/src/plugins/baremetal/debugserverprovidermanager.cpp index e7afc2ef10d..b32006d2c45 100644 --- a/src/plugins/baremetal/debugserverprovidermanager.cpp +++ b/src/plugins/baremetal/debugserverprovidermanager.cpp @@ -33,8 +33,6 @@ const char countKeyC[] = "DebugServerProvider.Count"; const char fileVersionKeyC[] = "Version"; const char fileNameKeyC[] = "debugserverproviders.xml"; -static DebugServerProviderManager *m_instance = nullptr; - // DebugServerProviderManager DebugServerProviderManager::DebugServerProviderManager() @@ -48,7 +46,6 @@ DebugServerProviderManager::DebugServerProviderManager() new StLinkUvscServerProviderFactory, new JLinkUvscServerProviderFactory}) { - m_instance = this; m_writer = new Utils::PersistentSettingsWriter( m_configFile, "QtCreatorDebugServerProviders"); @@ -69,14 +66,26 @@ DebugServerProviderManager::~DebugServerProviderManager() m_providers.clear(); qDeleteAll(m_factories); delete m_writer; - m_instance = nullptr; } +static DebugServerProviderManager *m_instance = nullptr; + DebugServerProviderManager *DebugServerProviderManager::instance() { + if (!m_instance) { + m_instance = new DebugServerProviderManager; + m_instance->restoreProviders(); + } + return m_instance; } +void setupDebugServerProviderManager(QObject *guard) +{ + DebugServerProviderManager::instance(); // force creation + m_instance->setParent(guard); +} + void DebugServerProviderManager::restoreProviders() { PersistentSettingsReader reader; diff --git a/src/plugins/baremetal/debugserverprovidermanager.h b/src/plugins/baremetal/debugserverprovidermanager.h index 08a9d3b51d6..87833a507fb 100644 --- a/src/plugins/baremetal/debugserverprovidermanager.h +++ b/src/plugins/baremetal/debugserverprovidermanager.h @@ -13,7 +13,6 @@ namespace Utils { class PersistentSettingsWriter; } namespace BareMetal::Internal { class BareMetalPlugin; -class BareMetalPluginPrivate; class IDebugServerProvider; class IDebugServerProviderFactory; @@ -25,7 +24,6 @@ class DebugServerProviderManager final : public QObject public: static DebugServerProviderManager *instance(); - ~DebugServerProviderManager() final; static QList providers(); static QList factories(); @@ -42,9 +40,10 @@ signals: void providersLoaded(); private: - void saveProviders(); DebugServerProviderManager(); + ~DebugServerProviderManager() final; + void saveProviders(); void restoreProviders(); static void notifyAboutUpdate(IDebugServerProvider *provider); @@ -53,9 +52,9 @@ private: const Utils::FilePath m_configFile; const QList m_factories; - friend class BareMetalPlugin; // for restoreProviders - friend class BareMetalPluginPrivate; // for constructor friend class IDebugServerProvider; }; +void setupDebugServerProviderManager(QObject *guard); + } // BareMetal::Internal