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

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

  Log Message:
  -----------
  REGRESSION(264840@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


_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to