From c8822865299742050cb15cdf1cb1cb405def0702 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 17 Oct 2018 08:07:03 +0200 Subject: [PATCH] ProjectExplorer: cancel MSVC tool chain detection on shutdown Task-number: QTCREATORBUG-21329 Change-Id: I681757f1a2e77ecd7f766f25ab554d57473f1c6d Reviewed-by: Orgad Shaneh Reviewed-by: Eike Ziller --- src/plugins/projectexplorer/msvctoolchain.cpp | 5 +++++ src/plugins/projectexplorer/msvctoolchain.h | 2 ++ src/plugins/projectexplorer/projectexplorer.cpp | 1 + src/plugins/projectexplorer/toolchainmanager.cpp | 6 ++++++ src/plugins/projectexplorer/toolchainmanager.h | 2 ++ 5 files changed, 16 insertions(+) diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index 8ed356a324d..2bc98d19ac4 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -1184,6 +1184,11 @@ bool MsvcToolChain::operator ==(const ToolChain &other) const return m_varsBatArg == msvcTc->m_varsBatArg; } +void MsvcToolChain::cancelMsvcToolChainDetection() +{ + envModThreadPool()->clear(); +} + bool MsvcToolChainFactory::canRestore(const QVariantMap &data) { const Core::Id id = typeIdFromMap(data); diff --git a/src/plugins/projectexplorer/msvctoolchain.h b/src/plugins/projectexplorer/msvctoolchain.h index 8cd39af2dc5..eca4d425ac0 100644 --- a/src/plugins/projectexplorer/msvctoolchain.h +++ b/src/plugins/projectexplorer/msvctoolchain.h @@ -79,6 +79,8 @@ public: bool operator == (const ToolChain &) const override; + static void cancelMsvcToolChainDetection(); + protected: explicit MsvcToolChain(Core::Id typeId, const QString &name, const Abi &abi, const QString &varsBat, const QString &varsBatArg, diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 56b30b3a996..50a5b2540c9 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -1657,6 +1657,7 @@ ExtensionSystem::IPlugin::ShutdownFlag ProjectExplorerPlugin::aboutToShutdown() disconnect(ModeManager::instance(), &ModeManager::currentModeChanged, dd, &ProjectExplorerPluginPrivate::currentModeChanged); ProjectTree::aboutToShutDown(); + ToolChainManager::aboutToShutdown(); SessionManager::closeAllProjects(); dd->m_shuttingDown = true; diff --git a/src/plugins/projectexplorer/toolchainmanager.cpp b/src/plugins/projectexplorer/toolchainmanager.cpp index acaeb8b7d78..8694e2bdb07 100644 --- a/src/plugins/projectexplorer/toolchainmanager.cpp +++ b/src/plugins/projectexplorer/toolchainmanager.cpp @@ -27,6 +27,7 @@ #include "abi.h" #include "kitinformation.h" +#include "msvctoolchain.h" #include "toolchain.h" #include "toolchainsettingsaccessor.h" @@ -248,4 +249,9 @@ bool ToolChainManager::isLanguageSupported(const Core::Id &id) return Utils::contains(d->m_languages, Utils::equal(&LanguageDisplayPair::id, id)); } +void ToolChainManager::aboutToShutdown() +{ + MsvcToolChain::cancelMsvcToolChainDetection(); +} + } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/toolchainmanager.h b/src/plugins/projectexplorer/toolchainmanager.h index 3fdcd981266..2e26431b84f 100644 --- a/src/plugins/projectexplorer/toolchainmanager.h +++ b/src/plugins/projectexplorer/toolchainmanager.h @@ -74,6 +74,8 @@ public: static QString displayNameOfLanguageId(const Core::Id &id); static bool isLanguageSupported(const Core::Id &id); + static void aboutToShutdown(); + void saveToolChains(); signals: