From cd9571b4f76798f2f40966d13c86bf204c040e68 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 4 Feb 2020 12:27:58 +0100 Subject: CppTools: Optionally move raw project parts creation into thread ... by letting callers pass in a generator function. This takes some load off the UI thread for larger projects. For now only used by the QbsProjectManager, which can provide a thread- safe generator function due to the project data existing in "value" form. Task-number: QTCREATORBUG-18533 Change-Id: I525dea36a4c4079bd1bd5a4fff844617547d56f1 Reviewed-by: hjk --- src/plugins/cpptools/cppprojectupdater.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/plugins/cpptools/cppprojectupdater.cpp') diff --git a/src/plugins/cpptools/cppprojectupdater.cpp b/src/plugins/cpptools/cppprojectupdater.cpp index f89f8e9fc8..4d95c5800e 100644 --- a/src/plugins/cpptools/cppprojectupdater.cpp +++ b/src/plugins/cpptools/cppprojectupdater.cpp @@ -61,7 +61,10 @@ void CppProjectUpdater::update(const ProjectExplorer::ProjectUpdateInfo &project // Run the project info generator in a worker thread and continue if that one is finished. const QFuture future = Utils::runAsync([=]() { - Internal::ProjectInfoGenerator generator(m_futureInterface, projectUpdateInfo); + ProjectUpdateInfo fullProjectUpdateInfo = projectUpdateInfo; + if (fullProjectUpdateInfo.rppGenerator) + fullProjectUpdateInfo.rawProjectParts = fullProjectUpdateInfo.rppGenerator(); + Internal::ProjectInfoGenerator generator(m_futureInterface, fullProjectUpdateInfo); return generator.generate(); }); m_generateFutureWatcher.setFuture(future); -- cgit v1.2.1