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

Reply via email to