Files
odfstudio/include
Miklos Vajna e7ab4b7dd1 tdf#170595 sw lok, idle layout: fast render of the 2nd page, too
Open a large document, the first page (inside the visible area) shows up
fast, then the idle layout starts calculating later pages. Now scroll
down to page 2, and tiles for that second page only arrive after the
full layout finished.

What happens is that idle layout unfortunately creates high priority
tasks as a side effect of completing its work, so the COOL any input
callback will not interrupt (assuming core has high priority tasks),
even when it should, so idle layout runs to completion and only then we
start rendering tiles.

An option would be to fix the priority of these tasks, but there are a
lot of them: 'vcl SystemDependentDataBuffer', 'svx::SdrPaintView
aComeBackIdle', 'svx::svdraw::SdrPageWindow mpObjectContact',
'sw::SwView m_aTimer', then I stopped looking further. At this point it
looks better to have a higher level mechanism. So introduce a flag in
comphelper/, and using that ignore reporting high priority tasks from
core to COOL till idle layout is in progress.

Note that recursive layouts are not supported, so no need to query the
current value before the first
comphelper::LibreOfficeKit::setIdleLayouting() call. With this, my 839
pages long document shows content on e.g. pages 2 & 3 just fine, even if
the full layout is not yet complete.

Change-Id: I3b7d422dd4a6c95e6fcedbdecb8a98bca6130002
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/201102
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2026-03-07 07:54:34 +01:00
..
2026-03-04 19:22:19 +01:00
2026-02-18 13:44:22 +01:00
2025-11-18 15:51:23 +01:00
…
2026-03-04 19:22:19 +01:00
2025-10-11 20:28:09 +02:00
2026-03-04 19:22:19 +01:00
2026-02-18 13:44:22 +01:00
2026-03-06 09:29:35 +01:00
2026-02-04 08:22:35 +01:00
2026-03-04 19:22:19 +01:00
2026-03-04 19:22:19 +01:00
…
2026-03-04 19:22:19 +01:00
…
…
…
…