Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 69f43e22401674b905bb6762846ce2f1814146be
      
https://github.com/WebKit/WebKit/commit/69f43e22401674b905bb6762846ce2f1814146be
  Author: Matt Woodrow <[email protected]>
  Date:   2024-07-11 (Thu, 11 Jul 2024)

  Changed paths:
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h
    M Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm
    M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h
    M Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm

  Log Message:
  -----------
  Crash in WebKit::RemoteLayerBackingStore::needsDisplay due to owner() being 
null.
https://bugs.webkit.org/show_bug.cgi?id=276352
<rdar://131107394>

Reviewed by Dan Glastonbury.

When a layer subtree has rendering suppression, we just want add its backing 
store
to m_reachableBackingStoreInLatestFlush to stop it from being purged.

It is entirely possible for the owner() (the GraphicsLayer) to have gone away, 
and
we want to continue to display the old content until suppression ends.

The existing code for 
RemoteLayerBackingStoreCollection::backingStoreWillBeDisplayed
checked for invalidation via needsDisplay(), which then crashed if the owner 
had gone
away.

This adds a new alternative that doesn't check for invalidation, with very 
explicit
rendering suppression naming.

* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::layerWillBeDisplayedWithRenderingSuppression):
(WebKit::RemoteLayerBackingStore::needsDisplay const):
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.h:
* Source/WebKit/Shared/RemoteLayerTree/RemoteLayerBackingStoreCollection.mm:
(WebKit::RemoteLayerBackingStoreCollection::backingStoreWillBeDisplayedWithRenderingSuppression):
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.h:
* Source/WebKit/WebProcess/WebPage/RemoteLayerTree/PlatformCALayerRemote.mm:
(WebKit::PlatformCALayerRemote::recursiveMarkWillBeDisplayedWithRenderingSuppresion):
(WebKit::PlatformCALayerRemote::recursiveBuildTransaction):
(WebKit::PlatformCALayerRemote::recursiveMarkWillBeDisplayed): Deleted.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to