[webkit-changes] [WebKit/WebKit] e6d379: Move the selfNeedsLayout() check out of RenderElem...

Simon Fraser noreply at github.com
Wed Nov 8 16:21:59 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: e6d3796b1e083a1d5368fb8af04c28d30dec6f28
      https://github.com/WebKit/WebKit/commit/e6d3796b1e083a1d5368fb8af04c28d30dec6f28
  Author: Simon Fraser <simon.fraser at apple.com>
  Date:   2023-11-08 (Wed, 08 Nov 2023)

  Changed paths:
    M Source/WebCore/rendering/LayoutRepainter.cpp
    M Source/WebCore/rendering/RenderElement.cpp
    M Source/WebCore/rendering/RenderElement.h
    M Source/WebCore/rendering/RenderLayer.cpp

  Log Message:
  -----------
  Move the selfNeedsLayout() check out of RenderElement::repaintAfterLayoutIfNeeded()
https://bugs.webkit.org/show_bug.cgi?id=264434
rdar://118138171

Reviewed by Alan Baradlay.

It's surprising that `RenderElement::repaintAfterLayoutIfNeeded()` consults selfNeedsLayout(), because why would we have different
behavior for renderers that get laid out but don't have the "self" bit set? This code was added in 9388 at main to reduce repainting.
Also, there are callers of `repaintAfterLayoutIfNeeded()` outside of layout; namely RenderLayer.

So, for clarify, move the `selfNeedsLayout()` check to `LayoutRepainter::repaintAfterLayout()`, where it makes more sense to
check layout bits.

* Source/WebCore/rendering/LayoutRepainter.cpp:
(WebCore::LayoutRepainter::repaintAfterLayout):
* Source/WebCore/rendering/RenderElement.cpp:
(WebCore::RenderElement::repaintAfterLayoutIfNeeded):
* Source/WebCore/rendering/RenderElement.h:
* Source/WebCore/rendering/RenderLayer.cpp:
(WebCore::RenderLayer::recursiveUpdateLayerPositions):

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




More information about the webkit-changes mailing list