WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
107326
Rubberband scrolling on news.google.com causes text to blink repeatedly
https://bugs.webkit.org/show_bug.cgi?id=107326
Summary
Rubberband scrolling on news.google.com causes text to blink repeatedly
Elliott Sprehn
Reported
2013-01-18 14:33:07 PST
In Webkit nightlies (but not Chrome canary) when you two finger scroll to the bottom of news.google.com and then scroll some more so the page bounces up and then back down the side bar of categories on the left has all of it's text blink at you several times. This seems to be some kind of compositing badness.
Attachments
Patch
(5.17 KB, patch)
2013-01-29 21:32 PST
,
Simon Fraser (smfr)
bdakin
: review+
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Elliott Sprehn
Comment 1
2013-01-18 14:34:11 PST
Note that the sidebar is position: fixed in this scenario, so I think it's rubber banding + position fixed + compositing.
Radar WebKit Bug Importer
Comment 2
2013-01-18 14:41:46 PST
<
rdar://problem/13045436
>
Simon Fraser (smfr)
Comment 3
2013-01-29 18:02:51 PST
The fixed thing is dropping out of a layer briefly, because we think it's layer is at 0,0 in the view (the Y offset should be larger).
Simon Fraser (smfr)
Comment 4
2013-01-29 18:03:01 PST
s/it's/its
Simon Fraser (smfr)
Comment 5
2013-01-29 20:28:17 PST
When we destroy the fixed layer because we think it's outside the viewport, the render tree is actually needing layout: RenderView 0x1180834f8 at (0,0) size 1143x605 (needs layout: positioned child) and the fixed layer has a bogus 0,0 location: layer 0x10d67eca8 at (0,0) size 196x606 scrollWidth 204 (composited, bounds=at (0,0) size 196x605, drawsContent=1, paints into ancestor=0) RenderBlock (positioned) 0x10d69ded8 zI: 99 {DIV} at (0,0) size 196x608 [bgcolor=#FFFFFF] id="nav-menu-wrapper" class="nav nav-one-col-hp jfk-scrollbar-borderless left-nav-pinned" (needs layout: self) RenderBlock 0x10d652d28 {DIV} at (28,3) size 152x553 class="browse-sidebar"
Simon Fraser (smfr)
Comment 6
2013-01-29 20:32:13 PST
Ah, we're actually inside layout at that point: * thread #1: tid = 0x2303, 0x00000001049d14a3 WebCore`WebCore::RenderLayerCompositor::requiresCompositingForPosition(WebCore::RenderObject*, WebCore::RenderLayer const*, WebCore::RenderLayer::ViewportConstrainedNotCompositedReason*) const + 755 at RenderLayerCompositor.cpp:2079, stop reason = breakpoint 8.1 frame #0: 0x00000001049d14a3 WebCore`WebCore::RenderLayerCompositor::requiresCompositingForPosition(WebCore::RenderObject*, WebCore::RenderLayer const*, WebCore::RenderLayer::ViewportConstrainedNotCompositedReason*) const + 755 at RenderLayerCompositor.cpp:2079 frame #1: 0x00000001049cc41d WebCore`WebCore::RenderLayerCompositor::requiresCompositingLayer(WebCore::RenderLayer const*, WebCore::RenderLayer::ViewportConstrainedNotCompositedReason*) const + 381 at RenderLayerCompositor.cpp:1645 frame #2: 0x00000001049ccdba WebCore`WebCore::RenderLayerCompositor::needsToBeComposited(WebCore::RenderLayer const*, WebCore::RenderLayer::ViewportConstrainedNotCompositedReason*) const + 74 at RenderLayerCompositor.cpp:1621 frame #3: 0x00000001049cc937 WebCore`WebCore::RenderLayerCompositor::updateBacking(WebCore::RenderLayer*, WebCore::RenderLayerCompositor::CompositingChangeRepaint) + 71 at RenderLayerCompositor.cpp:566 frame #4: 0x00000001049cd0e3 WebCore`WebCore::RenderLayerCompositor::updateLayerCompositingState(WebCore::RenderLayer*, WebCore::RenderLayerCompositor::CompositingChangeRepaint) + 35 at RenderLayerCompositor.cpp:659 frame #5: 0x000000010499b293 WebCore`WebCore::RenderLayer::updateScrollInfoAfterLayout() + 435 at RenderLayer.cpp:3097 frame #6: 0x0000000104864444 WebCore`WebCore::RenderBlock::updateScrollInfoAfterLayout() + 180 at RenderBlock.cpp:1349 frame #7: 0x0000000104865a0b WebCore`WebCore::RenderBlock::layoutBlock(bool, WebCore::LayoutUnit) + 2779 at RenderBlock.cpp:1589 frame #8: 0x00000001048644ce WebCore`WebCore::RenderBlock::layout() + 126 at RenderBlock.cpp:1363 frame #9: 0x0000000103bb8db6 WebCore`WebCore::RenderObject::layoutIfNeeded() + 54 at RenderObject.h:676 frame #10: 0x0000000104868cb4 WebCore`WebCore::RenderBlock::layoutPositionedObjects(bool, bool) + 724 at RenderBlock.cpp:2711 frame #11: 0x000000010486619e WebCore`WebCore::RenderBlock::simplifiedLayout() + 574 at RenderBlock.cpp:2604 frame #12: 0x000000010486500a WebCore`WebCore::RenderBlock::layoutBlock(bool, WebCore::LayoutUnit) + 218 at RenderBlock.cpp:1485 frame #13: 0x00000001048644ce WebCore`WebCore::RenderBlock::layout() + 126 at RenderBlock.cpp:1363 frame #14: 0x0000000104b3ad54 WebCore`WebCore::RenderView::layoutContent(WebCore::LayoutState const&) + 116 at RenderView.cpp:131 frame #15: 0x0000000104b3b54c WebCore`WebCore::RenderView::layout() + 1148 at RenderView.cpp:215 frame #16: 0x0000000103c4825d WebCore`WebCore::FrameView::layout(bool) + 3261 at FrameView.cpp:1213 frame #17: 0x00000001038f37d6 WebCore`WebCore::Document::updateLayout() + 374 at Document.cpp:1892 frame #18: 0x00000001049a0edd WebCore`WebCore::RenderLayer::hitTest(WebCore::HitTestRequest const&, RenderBlock::updateScrollInfoAfterLayout() is causing premature compositing stuff to happen inside layout.
Simon Fraser (smfr)
Comment 7
2013-01-29 20:53:31 PST
Looks like the code that was added for compositing scrolling is causing this.
Simon Fraser (smfr)
Comment 8
2013-01-29 21:32:27 PST
Created
attachment 185393
[details]
Patch
Simon Fraser (smfr)
Comment 9
2013-01-29 21:40:11 PST
http://trac.webkit.org/changeset/141221
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug