[webkit-changes] [WebKit/WebKit] 72ba23: REGRESSION(264840 at main) ASSERTION FAILED: CGRectIs...

Simon Fraser noreply at github.com
Thu Jun 29 15:06:12 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 72ba23e6beb5f4855c3abc4271d4161f1a27a2bf
      https://github.com/WebKit/WebKit/commit/72ba23e6beb5f4855c3abc4271d4161f1a27a2bf
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2023-06-29 (Thu, 29 Jun 2023)

  Changed paths:
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm

  Log Message:
  -----------
  REGRESSION(264840 at main) ASSERTION FAILED: CGRectIsNull(layer.contentsDirtyRect)
https://bugs.webkit.org/show_bug.cgi?id=258652
rdar://111229068

Reviewed by Brent Fulgham.

On platforms where -[CALayer contentsDirtyRect] is supported, TestWebKitAPI tests on iOS, and sometimes apps
on macOS would hit an assertion in RemoteLayerBackingStoreProperties::applyBackingStoreToLayer() that
the contentsDirtyRect was not the null rect. This happens when there has been no CA transaction since the last call to
applyBackingStoreToLayer() which has committed this layer.

This happens in TestWebKitAPI on iOS because the app is not a real UIKit app, so no layer commits happen. In other
scenarios it appears that it's possible to hit RemoteLayerBackingStoreProperties::applyBackingStoreToLayer() twice
without a layer being committed in between. When that happens, we need to accumulate into `contentsDirtyRect`,
and we should never clear it ourselves.

* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStoreProperties::applyBackingStoreToLayer):

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




More information about the webkit-changes mailing list