From 2a651bf477e91acceff3196ecfb883d33b6c6025 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Mon, 30 Oct 2017 10:12:32 +0100 Subject: [PATCH] GccToolChain: Invalidate caches on toolchain changes Change-Id: I91a69631d0417beb35574a5725da6b5a5e411113 Reviewed-by: Nikolai Kosjar --- src/plugins/projectexplorer/gcctoolchain.cpp | 7 +++++++ src/plugins/projectexplorer/gcctoolchain.h | 7 +++++++ src/plugins/projectexplorer/toolchain.h | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/gcctoolchain.cpp b/src/plugins/projectexplorer/gcctoolchain.cpp index cd81be8595b..5a1ba52fdda 100644 --- a/src/plugins/projectexplorer/gcctoolchain.cpp +++ b/src/plugins/projectexplorer/gcctoolchain.cpp @@ -177,6 +177,13 @@ QList GccToolChain::gccHeaderPaths(const FileName &gcc, const QStrin return systemHeaderPaths; } +void GccToolChain::toolChainUpdated() +{ + m_predefinedMacrosCache->invalidate(); + m_headerPathsCache->invalidate(); + ToolChain::toolChainUpdated(); +} + static QList guessGccAbi(const QString &m, const ProjectExplorer::Macros ¯os) { QList abiList; diff --git a/src/plugins/projectexplorer/gcctoolchain.h b/src/plugins/projectexplorer/gcctoolchain.h index f1c0f54a0f7..ad1007c239b 100644 --- a/src/plugins/projectexplorer/gcctoolchain.h +++ b/src/plugins/projectexplorer/gcctoolchain.h @@ -104,6 +104,12 @@ public: return checkImpl(compilerArguments); } + void invalidate() + { + QMutexLocker locker(&m_mutex); + m_cache.clear(); + } + private: Utils::optional checkImpl(const QStringList &compilerArguments) { @@ -217,6 +223,7 @@ protected: bool m_doesEnable = false; bool m_triggered = false; }; + void toolChainUpdated() override; private: explicit GccToolChain(Detection d); diff --git a/src/plugins/projectexplorer/toolchain.h b/src/plugins/projectexplorer/toolchain.h index 30009378236..018c99fd7eb 100644 --- a/src/plugins/projectexplorer/toolchain.h +++ b/src/plugins/projectexplorer/toolchain.h @@ -158,7 +158,7 @@ protected: explicit ToolChain(Core::Id typeId, Detection d); explicit ToolChain(const ToolChain &); - void toolChainUpdated(); + virtual void toolChainUpdated(); // Make sure to call this function when deriving! virtual bool fromMap(const QVariantMap &data);