DescriptionRAL: Eliminate n^2 walk to find repaint containers
Instead of walking up from every renderer to find the containerForRepaint,
pass the current repaint container along through repaintTreeAfterLayout
and update it when we pass through a renderer that's a repaint container.
This patch also introduces an isRepaintContainer function. This is guaranteed
to be able to be a repaint container, but due to filters and regions,
isn't guaranteed to be the repaint container for non-composited descendant
renderers. The magic logic to handle these special cases has been moved to
an adjustCompositedContainerForSpecialAncestors function, which has been
split out of containerForRepaint.
This patch also adds a switch in RenderBox to avoid unnecessarily mallocing
LayoutStates when we know our repaint container isn't the view.
BUG=320139
Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=174197
Patch Set 1 #Patch Set 2 : Add FIXME #Patch Set 3 : Rebase #Patch Set 4 : Fix the build, too :p #Patch Set 5 : Rebase again after Dan's patch #Patch Set 6 : Fix for SVG #
Total comments: 14
Patch Set 7 : Updated to ToT and with some name changes in RenderBlock #Patch Set 8 : Adding (improved!) test expectations and removing an unnecessary container call #Patch Set 9 : With needsRebaseline for other platforms #Patch Set 10 : With less asserts :( #
Total comments: 2
Patch Set 11 : Fixing enableLayoutState call #Patch Set 12 : ToT-ed #Patch Set 13 : One more test expectation update :-/ #Patch Set 14 : One more simple rebaseline... #Messages
Total messages: 23 (0 generated)
|