From e9045c496247a9e3e274a9b233fd90756d5f4ada Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Thu, 22 Sep 2022 15:24:52 +0200 Subject: [PATCH] Debugger: Delay restoration until Devices are restored Change-Id: Ib3f63e84959518cd629cb98e3e348aea50979927 Reviewed-by: hjk --- src/plugins/debugger/debuggeritemmanager.cpp | 12 ++++++++++++ src/plugins/debugger/debuggeritemmanager.h | 2 ++ src/plugins/debugger/debuggerplugin.cpp | 4 ++++ src/plugins/projectexplorer/projectexplorer.cpp | 4 +++- 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/plugins/debugger/debuggeritemmanager.cpp b/src/plugins/debugger/debuggeritemmanager.cpp index 4d5c32ab7f5..5c4c973aefd 100644 --- a/src/plugins/debugger/debuggeritemmanager.cpp +++ b/src/plugins/debugger/debuggeritemmanager.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -62,6 +63,8 @@ public: DebuggerItemManagerPrivate(); ~DebuggerItemManagerPrivate(); + void extensionsInitialized(); + void restoreDebuggers(); void saveDebuggers(); @@ -815,6 +818,10 @@ DebuggerItemManagerPrivate::DebuggerItemManagerPrivate() m_model = new DebuggerItemModel; m_optionsPage = new DebuggerOptionsPage; ExtensionSystem::PluginManager::addObject(m_optionsPage); +} + +void DebuggerItemManagerPrivate::extensionsInitialized() +{ restoreDebuggers(); } @@ -954,6 +961,11 @@ DebuggerItemManager::~DebuggerItemManager() delete d; } +void DebuggerItemManager::extensionsInitialized() +{ + d->extensionsInitialized(); +} + const QList DebuggerItemManager::debuggers() { QList result; diff --git a/src/plugins/debugger/debuggeritemmanager.h b/src/plugins/debugger/debuggeritemmanager.h index 36ddf9e8463..480d2a3174d 100644 --- a/src/plugins/debugger/debuggeritemmanager.h +++ b/src/plugins/debugger/debuggeritemmanager.h @@ -22,6 +22,8 @@ public: DebuggerItemManager(); ~DebuggerItemManager(); + void extensionsInitialized(); + static const QList debuggers(); static QVariant registerDebugger(const DebuggerItem &item); diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index b133fdb1a43..c6d256a1233 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -2053,6 +2053,10 @@ void DebuggerPluginPrivate::remoteCommand(const QStringList &options) void DebuggerPluginPrivate::extensionsInitialized() { + QTimer::singleShot(0, this, [this]{ + m_debuggerItemManager.extensionsInitialized(); + }); + // If the CppEditor or QmlJS editor plugin is there, we want to add something to // the editor context menu. for (Id menuId : { CppEditor::Constants::M_CONTEXT, QmlJSEditor::Constants::M_CONTEXT }) { diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index a84f0fb8ebe..c4704bd7c4a 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -2277,6 +2277,9 @@ void ProjectExplorerPlugin::extensionsInitialized() }); mtools->addAction(cmd); + // Load devices immediately, as other plugins might want to use them + DeviceManager::instance()->load(); + // delay restoring kits until UI is shown for improved perceived startup performance QTimer::singleShot(0, this, &ProjectExplorerPlugin::restoreKits); } @@ -2285,7 +2288,6 @@ void ProjectExplorerPlugin::restoreKits() { dd->determineSessionToRestoreAtStartup(); ExtraAbi::load(); // Load this before Toolchains! - DeviceManager::instance()->load(); ToolChainManager::restoreToolChains(); KitManager::restoreKits(); QTimer::singleShot(0, dd, &ProjectExplorerPluginPrivate::restoreSession); // delay a bit...