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

Issue 1373413002: Avoid scrollbar construction/destruction thrashing during flex layout. (Closed)

Created:
5 years, 2 months ago by szager1
Modified:
5 years, 2 months ago
Reviewers:
pdr., skobes, MuVen
CC:
chromium-reviews, blink-reviews, dshwang, slimming-paint-reviews_chromium.org, blink-reviews-paint_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Avoid scrollbar construction/destruction thrashing during flex layout. BUG=528940 R=skobes@chromium.org,pdr@chromium.org *** Re-landing this change after it was reverted; original patch: https://codereview.chromium.org/1357423007 *** Before this change: https://codereview.chromium.org/1295933003 ... blocks with overflow:auto would delay updating their scrollbars until after all flex layout was finished. After the change, scrollbar info is updated immediately during the course of layout. Flex items may run layout multiple times during flex layout; if a flex item has auto scrollbars, it may create and destroy its scrollbars multiple times. Aside from being a performance problem, this can cause WebScrollbarThemePainter to point to a stale Scrollbar object. If a flex item has scrollbars prior to layout; then the flex item destroys and creates scrollbars during layout; and at the end of layout, it still has a scrollbar; then CompositedDeprecatedPaintLayerMapping::updateOverflowControlsLayers will not update the WebScrollbarThemePainter with the final Scrollbar object. We could fix this in updateOverflowControlsLayers, but that wouldn't address the performance issue of needlessly creating and destroying scrollbars during flex layout. This patch avoids destroying scrollbars that are no longer deemed necessary, until after all flexing is finished. TBR=skobes,haraken,keishi Committed: https://crrev.com/86dda5bf4e56074eab86f12cbff115fed315f15e Cr-Commit-Position: refs/heads/master@{#351472}

Patch Set 1 #

Total comments: 1
Unified diffs Side-by-side diffs Delta from patch set Stats (+220 lines, -118 lines) Patch
M third_party/WebKit/Source/core/paint/DeprecatedPaintLayerScrollableArea.h View 5 chunks +53 lines, -10 lines 0 comments Download
M third_party/WebKit/Source/core/paint/DeprecatedPaintLayerScrollableArea.cpp View 15 chunks +167 lines, -108 lines 1 comment Download

Messages

Total messages: 11 (4 generated)
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1373413002/1 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1373413002/1
5 years, 2 months ago (2015-09-30 00:14:42 UTC) #2
commit-bot: I haz the power
Try jobs failed on following builders: mac_chromium_compile_dbg_ng on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_compile_dbg_ng/builds/104064) win_chromium_x64_rel_ng on tryserver.chromium.win (JOB_FAILED, ...
5 years, 2 months ago (2015-09-30 00:23:15 UTC) #4
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1373413002/1 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1373413002/1
5 years, 2 months ago (2015-09-30 00:40:14 UTC) #6
commit-bot: I haz the power
Committed patchset #1 (id:1)
5 years, 2 months ago (2015-09-30 02:15:21 UTC) #7
commit-bot: I haz the power
Patchset 1 (id:??) landed as https://crrev.com/86dda5bf4e56074eab86f12cbff115fed315f15e Cr-Commit-Position: refs/heads/master@{#351472}
5 years, 2 months ago (2015-09-30 02:16:30 UTC) #8
MuVen
On 2015/09/30 02:16:30, commit-bot: I haz the power wrote: > Patchset 1 (id:??) landed as ...
5 years, 2 months ago (2015-10-01 12:41:59 UTC) #9
MuVen
5 years, 2 months ago (2015-10-01 13:41:48 UTC) #11
Message was sent while issue was closed.
https://codereview.chromium.org/1373413002/diff/1/third_party/WebKit/Source/c...
File third_party/WebKit/Source/core/paint/DeprecatedPaintLayerScrollableArea.cpp
(right):

https://codereview.chromium.org/1373413002/diff/1/third_party/WebKit/Source/c...
third_party/WebKit/Source/core/paint/DeprecatedPaintLayerScrollableArea.cpp:683:
else if (box().style()->overflowX() == OSCROLL)
small typo error, corrected at 
https://codereview.chromium.org/1381943002/

Powered by Google App Engine
This is Rietveld 408576698