diff options
author | Marco Bubke <marco.bubke@qt.io> | 2019-05-22 12:26:58 +0200 |
---|---|---|
committer | Marco Bubke <marco.bubke@qt.io> | 2019-06-17 10:46:21 +0000 |
commit | b213dee0134722fcdcae88efb514e0430fc72959 (patch) | |
tree | 51b62b0de0c934f30fd49a3a0056e44614f11209 /src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp | |
parent | 912cb9278f7528709f9edf08060d997c20d3ec8c (diff) |
Clang: Improve updating
If project parts are up to date we send them directly to the indexer, so
the indexer can decide we something needs an update.
Change-Id: I7d4f32794c6b3a861cdefb3653a6dfd4e711f619
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp')
-rw-r--r-- | src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp b/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp index c1c12121aa..9cce6ef469 100644 --- a/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp +++ b/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp @@ -34,6 +34,7 @@ #include <updategeneratedfilesmessage.h> #include <updateprojectpartsmessage.h> +#include <utils/algorithm.h> #include <utils/smallstring.h> #include <QApplication> @@ -57,18 +58,29 @@ void PchManagerServer::end() QCoreApplication::exit(); } +namespace { +ProjectPartIds toProjectPartIds(const ProjectPartContainers &projectParts) +{ + return Utils::transform<ProjectPartIds>(projectParts, [](const auto &projectPart) { + return projectPart.projectPartId; + }); +} +} // namespace + void PchManagerServer::updateProjectParts(UpdateProjectPartsMessage &&message) { m_toolChainsArgumentsCache.update(message.projectsParts, message.toolChainArguments); - ProjectPartContainers newProjectParts = m_projectPartsManager.update(message.takeProjectsParts()); + auto upToDateProjectParts = m_projectPartsManager.update(message.takeProjectsParts()); if (m_generatedFiles.isValid()) { - m_pchTaskGenerator.addProjectParts(std::move(newProjectParts), + m_pchTaskGenerator.addProjectParts(std::move(upToDateProjectParts.notUpToDate), std::move(message.toolChainArguments)); } else { - m_projectPartsManager.updateDeferred(newProjectParts); + m_projectPartsManager.updateDeferred(upToDateProjectParts.notUpToDate); } + + client()->precompiledHeadersUpdated(toProjectPartIds(upToDateProjectParts.upToDate)); } void PchManagerServer::removeProjectParts(RemoveProjectPartsMessage &&message) |