diff options
Diffstat (limited to 'src/plugins/cpptools/cppmodelmanager.cpp')
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index a88ce01cc3..82616e7be4 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -547,17 +547,24 @@ CppModelManager::ProjectInfo CppModelManager::projectInfo(ProjectExplorer::Proje return m_projects.value(project, ProjectInfo(project)); } -void CppModelManager::updateProjectInfo(const ProjectInfo &pinfo) +QFuture<void> CppModelManager::updateProjectInfo(const ProjectInfo &pinfo) { { // only hold the mutex for a limited scope, so the dumping afterwards can aquire it without deadlocking. QMutexLocker locker(&m_projectMutex); if (!pinfo.isValid()) - return; + return QFuture<void>(); ProjectExplorer::Project *project = pinfo.project().data(); ProjectInfo oldProjectInfo = m_projects.value(project); if (oldProjectInfo.isValid()) { + if (pinfo.defines() == oldProjectInfo.defines() + && pinfo.includePaths() == oldProjectInfo.includePaths() + && pinfo.frameworkPaths() == oldProjectInfo.frameworkPaths() + && pinfo.sourceFiles() == oldProjectInfo.sourceFiles()) { + return QFuture<void>(); + } + foreach (const ProjectPart::Ptr &projectPart, oldProjectInfo.projectParts()) { foreach (const ProjectFile &cxxFile, projectPart->files) { foreach (const QString &fileName, @@ -587,6 +594,8 @@ void CppModelManager::updateProjectInfo(const ProjectInfo &pinfo) dumpModelManagerConfiguration(); emit projectPartsUpdated(pinfo.project().data()); + + return updateSourceFiles(pinfo.sourceFiles(), ForcedProgressNotification); } QList<ProjectPart::Ptr> CppModelManager::projectPart(const QString &fileName) const |