Bug 282518
| Summary: | compositingStatusChanged can set invalid repaint rects while backing sharing state is in-flight | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Matt Woodrow <mattwoodrow> |
| Component: | Layout and Rendering | Assignee: | Matt Woodrow <mattwoodrow> |
| Status: | RESOLVED FIXED | ||
| Severity: | Normal | CC: | bfulgham, simon.fraser, webkit-bug-importer, zalan |
| Priority: | P2 | Keywords: | InRadar |
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Matt Woodrow
When RenderLayerCompositor::computeCompositingRequirements makes a layer composited, it calls compositingStatusChanged to recompute the repaint rects on descendants.
This happens before updateBackingSharingAfterDescendantTraversal, so any backing sharing happening on descendants hasn't yet been resolved.
Backing sharing always clears the state on layers, and then re-sets it once completed, even if there aren't any changes.
This means we recompute the repaint rects using the 'repaint container' as if backing sharing wasn't happening, which is incorrect. Once backing sharing is finalised, we would recompute again if there had been changes, but if not this invalid state remains.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/139172121>
Matt Woodrow
Pull request: https://github.com/WebKit/WebKit/pull/36109
EWS
Committed 286181@main (6d0d68f4fda3): <https://commits.webkit.org/286181@main>
Reviewed commits have been landed. Closing PR #36109 and removing active labels.