Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: be985750e45c1fc613c9129570ab23d1896ee983
      
https://github.com/WebKit/WebKit/commit/be985750e45c1fc613c9129570ab23d1896ee983
  Author: Matt Woodrow <[email protected]>
  Date:   2025-11-02 (Sun, 02 Nov 2025)

  Changed paths:
    M Source/WebKit/UIProcess/ProvisionalPageProxy.cpp
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h
    M 
Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm
    M 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm

  Log Message:
  -----------
  RemoteLayerTreeDrawingAreaProxy::CommitLayerTree can be processed before 
WillCommitLayerTree.
https://bugs.webkit.org/show_bug.cgi?id=301392
<rdar://problem/163307734>

Reviewed by Gerald Squelart.

This happens because we use waitForAndDispatchImmediately which caused that
message to be processed synchronously, before others in the queue.

We workaround this by trying to detect willCommitLayerTree messages that have
been superseded, but it's hard to reason about.

This combines the WillCommitLayerTree and CommitLayerTreeNotTriggered messages
into a single message, and then has waitForDidUpdateActivityState wait on
whichever message is expected next to avoid reordering.

This reverts 266421@main, and replaces it with MESSAGE_CHECK assertions about
the state of commitLayerTreeMessageState and pendingLayerTreeTransactionID.

* Source/WebKit/Platform/IPC/Connection.cpp:
(IPC::Connection::waitForMessage):
(IPC::Connection::processIncomingMessage):
* Source/WebKit/Platform/IPC/Connection.h:
(IPC::Connection::waitForAndDispatchImmediately):
(IPC::Connection::WaitForMessageState::WaitForMessageState):
(IPC::Connection::waitForAsyncReplyAndDispatchImmediately):
(IPC::Connection::waitForMessageForTesting):
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.h:
* 
Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.messages.in:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTreeNotTriggered):
(WebKit::RemoteLayerTreeDrawingAreaProxy::willCommitLayerTree):
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTreeTransaction):
(WebKit::RemoteLayerTreeDrawingAreaProxy::waitForDidUpdateActivityState):
* 
Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::updateRendering):
(WebKit::RemoteLayerTreeDrawingArea::displayDidRefresh):

Canonical link: https://commits.webkit.org/302461@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to