]> git.lyx.org Git - lyx.git/commitdiff
Do not compute metrics at each preview when loading file
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Thu, 21 Dec 2023 15:33:06 +0000 (16:33 +0100)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Fri, 5 Apr 2024 11:06:26 +0000 (13:06 +0200)
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

index 4c37f7a8d0345be25b113a843ae1f4ef2a602a05..004ced6d899a742c317299951cf1638622eeef51 100644 (file)
@@ -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();
 }