summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2019-04-04 15:49:23 +0200
committerMarco Bubke <marco.bubke@qt.io>2019-04-23 09:08:15 +0000
commit0fbc16cd7d1aa376b6c7ea1850ebe32187c4a7f1 (patch)
tree1b287114b698f42986843ec92c1158e5a804996f /src
parent3927ca2ffae58eeea9dc1eecf8fa83a66794cf1e (diff)
downloadqt-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')
-rw-r--r--src/libs/clangsupport/connectionserver.h6
-rw-r--r--src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp2
-rw-r--r--src/tools/clangpchmanagerbackend/source/builddependenciesprovider.cpp6
-rw-r--r--src/tools/clangpchmanagerbackend/source/builddependenciesprovider.h6
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