diff options
author | Marco Bubke <marco.bubke@qt.io> | 2019-04-04 15:49:23 +0200 |
---|---|---|
committer | Marco Bubke <marco.bubke@qt.io> | 2019-04-23 09:08:15 +0000 |
commit | 0fbc16cd7d1aa376b6c7ea1850ebe32187c4a7f1 (patch) | |
tree | 1b287114b698f42986843ec92c1158e5a804996f /src | |
parent | 3927ca2ffae58eeea9dc1eecf8fa83a66794cf1e (diff) | |
download | qt-creator-0fbc16cd7d1aa376b6c7ea1850ebe32187c4a7f1.tar.gz |
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 <ivan.donchevskii@qt.io>
Diffstat (limited to 'src')
4 files changed, 18 insertions, 2 deletions
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<PchManagerServer, PchManagerClientProxy> 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<void()> &&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<void()> m_ensureAliveMessageIsSentCallback; }; } // namespace ClangBackEnd |