From fefce829ad6b824dd8425ec16bf160c987ca20e3 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 13 Apr 2018 15:36:24 +0200 Subject: [PATCH] Qmake: Invalidate contents of QmakeVfs on target change Task-number: QTCREATORBUG-20113 Change-Id: I13cd3749a942cc06172dd63f163bff88490a44ed Reviewed-by: Oswald Buddenhagen --- src/plugins/qmakeprojectmanager/qmakeproject.cpp | 10 ++++++++-- src/plugins/qmakeprojectmanager/qmakeproject.h | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 1bc2feaa94e..17ae3995f26 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -562,7 +562,12 @@ void QmakeProject::asyncUpdate() { m_asyncUpdateTimer.setInterval(UPDATE_INTERVAL); - m_qmakeVfs->invalidateCache(); + if (m_invalidateQmakeVfsContents) { + m_invalidateQmakeVfsContents = false; + m_qmakeVfs->invalidateContents(); + } else { + m_qmakeVfs->invalidateCache(); + } Q_ASSERT(!m_asyncUpdateFutureInterface); m_asyncUpdateFutureInterface = new QFutureInterface(); @@ -588,7 +593,7 @@ void QmakeProject::asyncUpdate() void QmakeProject::buildFinished(bool success) { if (success) - m_qmakeVfs->invalidateContents(); + m_invalidateQmakeVfsContents = true; } bool QmakeProject::supportsKit(const Kit *k, QString *errorMessage) const @@ -819,6 +824,7 @@ void QmakeProject::activeTargetWasChanged() } m_activeTarget = activeTarget(); + m_invalidateQmakeVfsContents = true; if (!m_activeTarget) return; diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h index 580b750aade..f9001ac420f 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.h +++ b/src/plugins/qmakeprojectmanager/qmakeproject.h @@ -181,6 +181,7 @@ private: // cached data during project rescan std::unique_ptr m_qmakeGlobals; int m_qmakeGlobalsRefCnt = 0; + bool m_invalidateQmakeVfsContents = false; QString m_qmakeSysroot;