From 6ee7989c6104dba2177fe449c4ae252b7d3588c4 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 11 Aug 2023 09:58:32 +0200 Subject: [PATCH] KitManager: Move the instance setup to a function Slightly nicer code and works well with settingspages nowadays. Change-Id: Ic12ff58f4b0f8db226843961eb2ab6fb8879429c Reviewed-by: Jarek Kobus --- src/plugins/projectexplorer/kitmanager.cpp | 22 ++++++++-------------- src/plugins/projectexplorer/kitmanager.h | 4 ++-- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/plugins/projectexplorer/kitmanager.cpp b/src/plugins/projectexplorer/kitmanager.cpp index feac7389b17..786d1c48623 100644 --- a/src/plugins/projectexplorer/kitmanager.cpp +++ b/src/plugins/projectexplorer/kitmanager.cpp @@ -118,20 +118,16 @@ private: // -------------------------------------------------------------------------- static Internal::KitManagerPrivate *d = nullptr; -static KitManager *m_instance = nullptr; KitManager *KitManager::instance() { - if (!m_instance) - m_instance = new KitManager; - return m_instance; + static KitManager theManager; + return &theManager; } KitManager::KitManager() { d = new KitManagerPrivate; - QTC_CHECK(!m_instance); - m_instance = this; connect(ICore::instance(), &ICore::saveSettingsRequested, this, &KitManager::saveKits); @@ -144,8 +140,6 @@ void KitManager::destroy() { delete d; d = nullptr; - delete m_instance; - m_instance = nullptr; } void KitManager::restoreKits() @@ -417,8 +411,8 @@ void KitManager::restoreKits() d->m_writer = std::make_unique(settingsFileName(), "QtCreatorProfiles"); d->m_initialized = true; - emit m_instance->kitsLoaded(); - emit m_instance->kitsChanged(); + emit instance()->kitsLoaded(); + emit instance()->kitsChanged(); } KitManager::~KitManager() @@ -600,9 +594,9 @@ void KitManager::notifyAboutUpdate(Kit *k) return; if (Utils::contains(d->m_kitList, k)) - emit m_instance->kitUpdated(k); + emit instance()->kitUpdated(k); else - emit m_instance->unmanagedKitUpdated(k); + emit instance()->unmanagedKitUpdated(k); } Kit *KitManager::registerKit(const std::function &init, Utils::Id id) @@ -624,7 +618,7 @@ Kit *KitManager::registerKit(const std::function &init, Utils::Id if (!d->m_defaultKit || (!d->m_defaultKit->isValid() && kptr->isValid())) setDefaultKit(kptr); - emit m_instance->kitAdded(kptr); + emit instance()->kitAdded(kptr); return kptr; } @@ -647,7 +641,7 @@ void KitManager::setDefaultKit(Kit *k) if (k && !Utils::contains(d->m_kitList, k)) return; d->m_defaultKit = k; - emit m_instance->defaultkitChanged(); + emit instance()->defaultkitChanged(); } void KitManager::completeKit(Kit *k) diff --git a/src/plugins/projectexplorer/kitmanager.h b/src/plugins/projectexplorer/kitmanager.h index a710d62d5f2..1fe676ed6b3 100644 --- a/src/plugins/projectexplorer/kitmanager.h +++ b/src/plugins/projectexplorer/kitmanager.h @@ -127,13 +127,12 @@ protected: QAction *m_mutableAction = nullptr; }; -class PROJECTEXPLORER_EXPORT KitManager : public QObject +class PROJECTEXPLORER_EXPORT KitManager final : public QObject { Q_OBJECT public: static KitManager *instance(); - ~KitManager() override; static const QList kits(); static Kit *kit(const Kit::Predicate &predicate); @@ -170,6 +169,7 @@ signals: private: KitManager(); + ~KitManager() override; static void destroy();