Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 6eebc817120bbd8feeccb4d7fd74c5d948cfb908
      
https://github.com/WebKit/WebKit/commit/6eebc817120bbd8feeccb4d7fd74c5d948cfb908
  Author: Nikolas Zimmermann <[email protected]>
  Date:   2022-11-19 (Sat, 19 Nov 2022)

  Changed paths:
    M Source/WebCore/rendering/RenderBox.cpp
    M Source/WebCore/rendering/RenderBox.h
    M Source/WebCore/rendering/RenderLayer.cpp
    M Source/WebCore/rendering/svg/RenderSVGModelObject.h

  Log Message:
  -----------
  Cleanup RenderLayer::updateLayerPosition()
https://bugs.webkit.org/show_bug.cgi?id=245363

Reviewed by Simon Fraser.

Apply several cleanups in RenderLayer:

- Use dynamicDowncast<> instead of if<>/downcast<> pairs, where possible.
- Re-use logic from RenderLayerCompositor to determine if a RenderWidget
  requires accelerated compositing or not, instead of duplicating the check.

- Get rid of unused 'inlineBoundingBoxOffset' bookkeeping in 
updateLayerPosition().
  'localPoint' needed this adjustment in the past to support multi-column 
related
  computations, that are no longer present in updateLayerPosition(), thus the
  special handling for inlines is obsolete.

- Move code that computes the layer location and layer size into its own helper
  method, to make the code more readable and less error-prone.

- Remove the applyTopLeftLocationOffset() method from RenderBox, which was used
  by RenderLayer::updateLayerPosition() to apply the box top-left location 
offset
  to compute the layer location. Unlike topLeftLocation() / 
topLeftLocationOffset()
  the applyTopLeftLocationOffset() method is used in a hot code-path, and 
therefore
  inlined the most common case: returning frameRect().location(), if no 
coordinate
  flipping due to writing-mode is necessary.

  Extend that idea to the other accessors, and remove the need for
  applyTopLeftLocationOffset() alltogther. One slow-path for both 
topLeftLocation()
  and topLeftLocationOffset() is enough, as topLeftLocationOffsetWithFlipping() 
is
  equal to toLayoutSize(topLeftLocationWithFlipping) -- the additional 
round-trip
  is negligble compared to the work done for the coordinate flipping, so it's 
fine
  to stay with one slow-path for both topLeftLocation() / 
topLeftLocationOffset().

No change in functionality, covered by existing tests

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


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to