Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Crash under PlatformCALayerRemote::recursiveBuildTransaction()
https://bugs.webkit.org/show_bug.cgi?id=259607 rdar://32076163 Reviewed by Tim Horton. In some scenarios, we can end up with a PlatformCALayerRemote which remains in a sublayer list after being deleted. The testcase has a <video> which toggles from composited to non-composited and back. This video has a mask, and a reflection. The reflection RendeLayer (the RenderReplica's layer) remains composited. When this happens, the masks layer's clone remains in the sublayer list of the "replica flattening" layer, but it's owning reference, in the LayerClones struct owned by the video layer, went away when the video stopped being composited temporarily. The real issue is that we failed to rebuild the sublayer list of the "replica flattening" layer in this case, so make sure we trigger that. * LayoutTests/compositing/reflections/video-mask-reflection-crash-expected.txt: Added. * LayoutTests/compositing/reflections/video-mask-reflection-crash.html: Added. * Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp: (WebCore::GraphicsLayerCA::setReplicatedLayer): Originally-landed-as: 265870.224@safari-7616-branch (73eb68e). rdar://116426044 Canonical link: https://commits.webkit.org/269097@main
- Loading branch information