commit 244969330108a89f4be93d3b2eb9024bdb756204 Author: Jean-Marc Lasgouttes <lasgout...@lyx.org> Date: Thu Dec 21 16:33:06 2023 +0100
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. --- 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<PreviewImagePtr>::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(); } -- lyx-cvs mailing list lyx-cvs@lists.lyx.org http://lists.lyx.org/mailman/listinfo/lyx-cvs