haikuwebkit/LayoutTests/fast/repaint/transform-change-repaint-ex...

6 lines
64 B
Plaintext
Raw Permalink Normal View History

Avoid unnecessary repaints when transforms change https://bugs.webkit.org/show_bug.cgi?id=223307 Reviewed by Zalan Bujtas. Source/WebCore: RenderElement::repaintBeforeStyleChange() issues repaints when transforms, opacity or filters change because the layer might disappear, but we know that this only happens if the style changes between having a transform/filter/non-1 opacity and not. Transform changes in general repaint via layout (the RenderLayer gets setLayerNeedsFullRepaint() called on it). Opacity and filter changes repaint by virtue of a RepaintLayer style diff. This reduces some repaint calls in the MotionMark leaves test. This code is a mess and dates from ancient times (r7675); it doens't know about self-painting layers, and duplicates work done in RenderLayerModelObject::styleDidChange() when a renderer loses its layer, but that's too much to change now. Test: fast/repaint/transform-change-repaint.html * rendering/RenderBox.h: * rendering/RenderBoxModelObject.h: * rendering/RenderElement.cpp: (WebCore::RenderElement::repaintBeforeStyleChange): * rendering/RenderElement.h: (WebCore::RenderElement::createsGroupForStyle): * rendering/style/RenderStyle.h: (WebCore::RenderStyle::hasOpacity const): * style/StyleAdjuster.cpp: (WebCore::Style::Adjuster::adjust const): LayoutTests: * fast/repaint/transform-change-repaint-expected.txt: Added. * fast/repaint/transform-change-repaint.html: Added. Canonical link: https://commits.webkit.org/235438@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@274597 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-03-17 23:12:38 +00:00
(repaint rects
(rect 40 50 208 118)
(rect 32 50 201 147)
)