Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 0c2a3f82bdd8a766343f3b9c9c5e37b86a239c2d
https://github.com/WebKit/WebKit/commit/0c2a3f82bdd8a766343f3b9c9c5e37b86a239c2d
Author: Charlie Wolfe <[email protected]>
Date: 2026-10-08 (Thu, 08 Oct 2026)
Changed paths:
M
LayoutTests/accessibility/isolated-tree/mac/dynamic-rtl-line-boundaries.html
M Source/WebCore/platform/Timer.cpp
M Source/WebCore/platform/Timer.h
M
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h
M
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm
Log Message:
-----------
First paint after paint holding ends is delayed by WebCore timers that are
already due
https://bugs.webkit.org/show_bug.cgi?id=326534
rdar://189323717
Reviewed by Matt Woodrow.
When paint holding ends on a page that has never painted,
RemoteLayerTreeDrawingArea starts its
rendering update timer with startOneShot(0_s). If this happens while timers are
firing, the update
is queued behind every timer that is already due, such as async scripts
released at the end of
parsing. Those timers can delay first meaningful paint.
Add TimerBase::startOneShotBeforeDueTimers(). It gives the timer a fire time
earlier than any real
one, so it fires next in the current timer pass, ahead of timers that are
already due.
RemoteLayerTreeDrawingArea uses it for the first rendering update after paint
holding ends when no
root frame in the process has never painted.
* LayoutTests/accessibility/isolated-tree/mac/dynamic-rtl-line-boundaries.html:
* Source/WebCore/platform/Timer.cpp:
(WebCore::TimerBase::startOneShotBeforeDueTimers):
* Source/WebCore/platform/Timer.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
*
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::hasNeverPainted):
(WebKit::RemoteLayerTreeDrawingArea::setLayerTreeStateIsFrozen):
(WebKit::RemoteLayerTreeDrawingArea::startRenderingUpdateTimer):
(WebKit::RemoteLayerTreeDrawingArea::updateRendering):
Canonical link: https://commits.webkit.org/323176@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications