From 0fbc16cd7d1aa376b6c7ea1850ebe32187c4a7f1 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 4 Apr 2019 15:49:23 +0200 Subject: ClangPchManager: Fix alive message Computing the dependencies can take quite some time. So it is better to ensure that the alive timer is fired. Change-Id: I0b372ef73a8a5e6716673ba9457d424151a762bb Reviewed-by: Ivan Donchevskii --- src/libs/clangsupport/connectionserver.h | 6 ++++++ src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp | 2 ++ .../clangpchmanagerbackend/source/builddependenciesprovider.cpp | 6 ++++-- src/tools/clangpchmanagerbackend/source/builddependenciesprovider.h | 6 ++++++ 4 files changed, 18 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/libs/clangsupport/connectionserver.h b/src/libs/clangsupport/connectionserver.h index 68defa48d3..b60083c4f8 100644 --- a/src/libs/clangsupport/connectionserver.h +++ b/src/libs/clangsupport/connectionserver.h @@ -72,6 +72,12 @@ public: } + void ensureAliveMessageIsSent() + { + if (m_aliveTimer.remainingTime() == 0) + sendAliveMessage(); + } + private: void connectToLocalServer(const QString &connectionName) { diff --git a/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp b/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp index a7ca916f15..f8b71f61b9 100644 --- a/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp +++ b/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp @@ -273,6 +273,8 @@ int main(int argc, char *argv[]) ConnectionServer connectionServer; connectionServer.setServer(&data.clangPchManagerServer); + data.buildDependencyProvider.setEnsureAliveMessageIsSentCallback( + [&] { connectionServer.ensureAliveMessageIsSent(); }); connectionServer.start(connectionName); return application.exec(); diff --git a/src/tools/clangpchmanagerbackend/source/builddependenciesprovider.cpp b/src/tools/clangpchmanagerbackend/source/builddependenciesprovider.cpp index bf00f39098..c2e3b4a5f9 100644 --- a/src/tools/clangpchmanagerbackend/source/builddependenciesprovider.cpp +++ b/src/tools/clangpchmanagerbackend/source/builddependenciesprovider.cpp @@ -55,8 +55,10 @@ OutputContainer setUnion(InputContainer1 &&input1, BuildDependency BuildDependenciesProvider::create(const ProjectPartContainer &projectPart) { - auto sourcesAndProjectPart = createSourceEntriesFromStorage( - projectPart.sourcePathIds, projectPart.projectPartId); + m_ensureAliveMessageIsSentCallback(); + + auto sourcesAndProjectPart = createSourceEntriesFromStorage(projectPart.sourcePathIds, + projectPart.projectPartId); if (!m_modifiedTimeChecker.isUpToDate(sourcesAndProjectPart.first)) { BuildDependency buildDependency = m_generator.create(projectPart); diff --git a/src/tools/clangpchmanagerbackend/source/builddependenciesprovider.h b/src/tools/clangpchmanagerbackend/source/builddependenciesprovider.h index a006b10a06..924e3e4f45 100644 --- a/src/tools/clangpchmanagerbackend/source/builddependenciesprovider.h +++ b/src/tools/clangpchmanagerbackend/source/builddependenciesprovider.h @@ -53,6 +53,11 @@ public: BuildDependency create(const ProjectPartContainer &projectPart) override; + void setEnsureAliveMessageIsSentCallback(std::function &&callback) + { + m_ensureAliveMessageIsSentCallback = std::move(callback); + } + private: BuildDependency createBuildDependencyFromStorage(SourceEntries &&includes) const; UsedMacros createUsedMacrosFromStorage(const SourceEntries &includes) const; @@ -65,6 +70,7 @@ private: ModifiedTimeCheckerInterface<> &m_modifiedTimeChecker; BuildDependencyGeneratorInterface &m_generator; Sqlite::TransactionInterface &m_transactionBackend; + std::function m_ensureAliveMessageIsSentCallback; }; } // namespace ClangBackEnd -- cgit v1.2.1