aboutsummaryrefslogtreecommitdiffstats
path: root/src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2019-05-22 12:26:58 +0200
committerMarco Bubke <marco.bubke@qt.io>2019-06-17 10:46:21 +0000
commitb213dee0134722fcdcae88efb514e0430fc72959 (patch)
tree51b62b0de0c934f30fd49a3a0056e44614f11209 /src/tools/clangpchmanagerbackend/source/pchmanagerserver.cpp
parent912cb9278f7528709f9edf08060d997c20d3ec8c (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.cpp18
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)