[webkit-changes] [WebKit/WebKit] d689b8: visionOS: Compositing layers can end up getting sh...

Tim Horton noreply at github.com
Mon Mar 25 12:53:25 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: d689b8edef147f0eab7c70fc6f0f3a1ad8db5e3b
      https://github.com/WebKit/WebKit/commit/d689b8edef147f0eab7c70fc6f0f3a1ad8db5e3b
  Author: Tim Horton <thorton at apple.com>
  Date:   2024-03-25 (Mon, 25 Mar 2024)

  Changed paths:
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeInteractionRegionLayers.mm
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h
    M Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm

  Log Message:
  -----------
  visionOS: Compositing layers can end up getting shuffled out of order on layer tree mutation
https://bugs.webkit.org/show_bug.cgi?id=268420
<rdar://121612730>

Reviewed by Richard Robinson and Simon Fraser.

It turns out it is not advisable to have interleaved UIView and CALayer children
underneath a UIView. Avoid this by wrapping the interaction region root layer
in a UIView.

* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
(-[UIView _web_setSubviews:]):
Add an assertion to avoid future re-debugging of this issue.

(WebKit::RemoteLayerTreePropertyApplier::applyHierarchyUpdates):
Don't bother moving the interaction region container around in the non-UIView
case; it never comes up, as on UIKit-having platforms we always make UIViews
for all but the tile contents layers, which never have interaction regions.

* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.h:
* Source/WebKit/UIProcess/RemoteLayerTree/RemoteLayerTreeNode.mm:
(WebKit::RemoteLayerTreeNode::ensureInteractionRegionsContainer):
(WebKit::RemoteLayerTreeNode::removeInteractionRegionsContainer):
(WebKit::RemoteLayerTreeNode::repositionInteractionRegionsContainerIfNeeded):
Swap the CALayer for a UIView. However, we'll continue using the layer
for maintaining state and our set of sublayers, since it has no view children.

Originally-landed-as: 272448.443 at safari-7618-branch (1b8630ced33e). rdar://124554005
Canonical link: https://commits.webkit.org/276644@main



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


More information about the webkit-changes mailing list