From 15eef6a2c7cdca128a3476f2109371f35b372eba Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Thu, 21 Dec 2023 16:33:06 +0100 Subject: [PATCH] Do not compute metrics at each preview when loading file With the branch-test.lyx file from #12297, loading takes forever when previews are activated. This is because each preview element causes a full screen metrics recomputation. This commit just skips these calls and only does one when all previews have been obtained. As a result, computing the previews takes 1 second instead of 25 seconds on branch-test.lyx. Part of bug #12297. (cherry picked from commit 244969330108a89f4be93d3b2eb9024bdb756204) --- src/graphics/PreviewLoader.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/graphics/PreviewLoader.cpp b/src/graphics/PreviewLoader.cpp index 4c37f7a8d0..004ced6d89 100644 --- a/src/graphics/PreviewLoader.cpp +++ b/src/graphics/PreviewLoader.cpp @@ -787,6 +787,16 @@ void PreviewLoader::Impl::finishedGenerating(pid_t pid, int retval) // Remove the item from the list of still-executing processes. in_progress_.erase(git); +#if 0 + /* FIXME : there is no need for all these calls, which recompute + * all metrics for each and every preview. The single call at the + * end of this method is sufficient. + + * It seems that this whole imageReady mechanism is actually not + * needed. If it is the case, the whole updateFrontend/updateInset + * bloat can go too. + */ + // Tell the outside world list::const_reverse_iterator nit = newimages.rbegin(); @@ -795,6 +805,8 @@ void PreviewLoader::Impl::finishedGenerating(pid_t pid, int retval) for (; nit != nend; ++nit) { imageReady(*nit->get()); } +#endif + finished_generating_ = true; buffer_.scheduleRedrawWorkAreas(); }