Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Issue 1786513002: Fix paint invalidation of paintInvalidationContainer itself (Closed)

Created:
4 years, 9 months ago by Xianzhu
Modified:
4 years, 9 months ago
Reviewers:
chrishtr
CC:
blink-reviews, blink-reviews-layout_chromium.org, chromium-reviews, eae+blinkwatch, jchaffraix+rendering, leviw+renderwatch, pdr+renderingwatchlist_chromium.org, szager+layoutwatch_chromium.org, zoltan1
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Fix paint invalidation of paintInvalidationContainer itself LayoutBlock::invalidatePaintOfSubtreesIfNeeded() has a condition. paintInvalidationContainerForChild != childPaintInvalidationState.paintInvalidationContainer() to use the ForceHorriblySlowRectMapping path in case that the PaintInvalidationState fails to get the correct paintInvalidationContainer. However, the childPaintInvalidationState actually contains the parent paintInvalidationContainer if the current object itself is a paintInvalidationContainer so the above condition is false for out-of-flow-positioned composited objects, and will use the ForceHorriblySlowRectMapping path for paint invalidation of the subtree. Also LayoutBox::mapToVisibleRectInAncestorSpace() depends on the fact that paintInvalidationState contains parent paintInvalidationContainer if the current object itself is a paintInvalidationContainer. To avoid the dependency we should check 'ancestor == this' before checking PaintInvalidationState. BUG=371485, 591199 Committed: https://crrev.com/df97b1c6526b25450d767b2098c8ee1c3d124b95 Cr-Commit-Position: refs/heads/master@{#380865}

Patch Set 1 #

Total comments: 10

Patch Set 2 : #

Total comments: 4

Patch Set 3 : #

Patch Set 4 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+47 lines, -32 lines) Patch
M third_party/WebKit/Source/core/layout/LayoutBlock.cpp View 1 2 1 chunk +4 lines, -1 line 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutBox.cpp View 1 2 3 1 chunk +2 lines, -12 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutInline.cpp View 1 2 3 1 chunk +2 lines, -6 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutObject.cpp View 1 2 3 2 chunks +3 lines, -5 lines 0 comments Download
M third_party/WebKit/Source/core/layout/LayoutTableCell.cpp View 1 2 3 1 chunk +1 line, -1 line 0 comments Download
M third_party/WebKit/Source/core/layout/PaintInvalidationState.h View 1 2 3 1 chunk +3 lines, -2 lines 0 comments Download
M third_party/WebKit/Source/core/layout/PaintInvalidationState.cpp View 1 2 3 2 chunks +29 lines, -2 lines 0 comments Download
M third_party/WebKit/Source/core/layout/svg/LayoutSVGInlineText.cpp View 1 2 3 1 chunk +1 line, -1 line 0 comments Download
M third_party/WebKit/Source/core/layout/svg/SVGLayoutSupport.cpp View 1 2 3 2 chunks +2 lines, -2 lines 0 comments Download

Dependent Patchsets:

Messages

Total messages: 21 (5 generated)
Xianzhu
4 years, 9 months ago (2016-03-11 01:47:11 UTC) #2
chrishtr
https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBlock.cpp File third_party/WebKit/Source/core/layout/LayoutBlock.cpp (right): https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBlock.cpp#newcode359 third_party/WebKit/Source/core/layout/LayoutBlock.cpp:359: if (&paintInvalidationContainerForChild != box && paintInvalidationContainerForChild != childPaintInvalidationState.paintInvalidationContainer()) { ...
4 years, 9 months ago (2016-03-11 18:19:59 UTC) #4
Xianzhu
https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBlock.cpp File third_party/WebKit/Source/core/layout/LayoutBlock.cpp (right): https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBlock.cpp#newcode359 third_party/WebKit/Source/core/layout/LayoutBlock.cpp:359: if (&paintInvalidationContainerForChild != box && paintInvalidationContainerForChild != childPaintInvalidationState.paintInvalidationContainer()) { ...
4 years, 9 months ago (2016-03-11 18:30:33 UTC) #5
chrishtr
https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBlock.cpp File third_party/WebKit/Source/core/layout/LayoutBlock.cpp (right): https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBlock.cpp#newcode359 third_party/WebKit/Source/core/layout/LayoutBlock.cpp:359: if (&paintInvalidationContainerForChild != box && paintInvalidationContainerForChild != childPaintInvalidationState.paintInvalidationContainer()) { ...
4 years, 9 months ago (2016-03-11 21:17:16 UTC) #6
Xianzhu
https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBlock.cpp File third_party/WebKit/Source/core/layout/LayoutBlock.cpp (right): https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBlock.cpp#newcode359 third_party/WebKit/Source/core/layout/LayoutBlock.cpp:359: if (&paintInvalidationContainerForChild != box && paintInvalidationContainerForChild != childPaintInvalidationState.paintInvalidationContainer()) { ...
4 years, 9 months ago (2016-03-11 21:39:56 UTC) #7
chrishtr
https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBox.cpp File third_party/WebKit/Source/core/layout/LayoutBox.cpp (right): https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBox.cpp#newcode1904 third_party/WebKit/Source/core/layout/LayoutBox.cpp:1904: if (ancestor == this) { On 2016/03/11 at 21:39:56, ...
4 years, 9 months ago (2016-03-11 21:43:06 UTC) #8
Xianzhu
https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBox.cpp File third_party/WebKit/Source/core/layout/LayoutBox.cpp (right): https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBox.cpp#newcode1904 third_party/WebKit/Source/core/layout/LayoutBox.cpp:1904: if (ancestor == this) { On 2016/03/11 21:43:06, chrishtr ...
4 years, 9 months ago (2016-03-11 22:08:25 UTC) #9
chrishtr
https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBox.cpp File third_party/WebKit/Source/core/layout/LayoutBox.cpp (right): https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBox.cpp#newcode1904 third_party/WebKit/Source/core/layout/LayoutBox.cpp:1904: if (ancestor == this) { On 2016/03/11 at 21:39:56, ...
4 years, 9 months ago (2016-03-11 22:11:44 UTC) #10
Xianzhu
https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBox.cpp File third_party/WebKit/Source/core/layout/LayoutBox.cpp (right): https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBox.cpp#newcode1904 third_party/WebKit/Source/core/layout/LayoutBox.cpp:1904: if (ancestor == this) { On 2016/03/11 22:11:44, chrishtr ...
4 years, 9 months ago (2016-03-11 22:23:43 UTC) #11
Xianzhu
https://codereview.chromium.org/1786513002/diff/20001/third_party/WebKit/Source/core/layout/LayoutBlock.cpp File third_party/WebKit/Source/core/layout/LayoutBlock.cpp (right): https://codereview.chromium.org/1786513002/diff/20001/third_party/WebKit/Source/core/layout/LayoutBlock.cpp#newcode359 third_party/WebKit/Source/core/layout/LayoutBlock.cpp:359: if (&paintInvalidationContainerForChild != box && paintInvalidationContainerForChild != childPaintInvalidationState.paintInvalidationContainer()) { ...
4 years, 9 months ago (2016-03-11 22:30:51 UTC) #12
chrishtr
On 2016/03/11 at 22:23:43, wangxianzhu wrote: > https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBox.cpp > File third_party/WebKit/Source/core/layout/LayoutBox.cpp (right): > > https://codereview.chromium.org/1786513002/diff/1/third_party/WebKit/Source/core/layout/LayoutBox.cpp#newcode1904 ...
4 years, 9 months ago (2016-03-11 22:36:41 UTC) #13
Xianzhu
On 2016/03/11 22:36:41, chrishtr wrote: > On 2016/03/11 at 22:23:43, wangxianzhu wrote: > > > ...
4 years, 9 months ago (2016-03-12 00:06:59 UTC) #14
chrishtr
lgtm
4 years, 9 months ago (2016-03-12 00:31:51 UTC) #15
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1786513002/60001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1786513002/60001
4 years, 9 months ago (2016-03-12 02:17:42 UTC) #17
commit-bot: I haz the power
Committed patchset #4 (id:60001)
4 years, 9 months ago (2016-03-12 04:58:51 UTC) #19
commit-bot: I haz the power
4 years, 9 months ago (2016-03-12 05:00:42 UTC) #21
Message was sent while issue was closed.
Patchset 4 (id:??) landed as
https://crrev.com/df97b1c6526b25450d767b2098c8ee1c3d124b95
Cr-Commit-Position: refs/heads/master@{#380865}

Powered by Google App Engine
This is Rietveld 408576698