[Webkit-unassigned] [Bug 78872] [chromium] ScrollbarLayerChromium/CCScrollbarLayerImpl for CC-side scrollbar painting

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Mon Mar 5 19:35:34 PST 2012


https://bugs.webkit.org/show_bug.cgi?id=78872





--- Comment #35 from Tien-Ren Chen <trchen at chromium.org>  2012-03-05 19:35:34 PST ---
(In reply to comment #34)
> (From update of attachment 130213 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=130213&action=review
> 
> Some of the rects seem off in various cases.  I tried dumping all properties exposed by ScrollbarThemeClient on the main and impl side for the test compositing/culling/filter-occlusion-alpha-large.html:
> 
> erty height is 600
> property size().width is 15
> property size().height is 600
> property location().x is 785
> property location().y is 0
> property frameRect().x is 785
> property frameRect().y is 0
> property frameRect().width is 15
> property frameRect().height is 600
> property value is 0
> property visibleSize is 600
> property totalSize is 0
> property maximum is -600
> main thread horizontal scrollbar:
> property x is 0
> property y is 0
> property width is 15
> property height is 15
> property size().width is 15
> property size().height is 15
> property location().x is 0
> property location().y is 0
> property frameRect().x is 0
> property frameRect().y is 0
> property frameRect().width is 15
> property frameRect().height is 15
> property value is 0
> property visibleSize is 0
> property totalSize is 0
> property maximum is 0
> 
> impl thread vertical scrollbar:
> property x is 0
> property y is 0
> property width is 15
> property height is 585
> property size().width is 15
> property size().height is 585
> property location().x is 0
> property location().y is 0
> property frameRect().x is 0
> property frameRect().y is 0
> property frameRect().width is 15
> property frameRect().height is 585
> property value is 0
> property visibleSize is 600
> property totalSize is 800
> property maximum is 200
> impl thread horizontal scrollbar:
> property x is 0
> property y is 0
> property width is 785
> property height is 15
> property size().width is 785
> property size().height is 15
> property location().x is 0
> property location().y is 0
> property frameRect().x is 0
> property frameRect().y is 0
> property frameRect().width is 785
> property frameRect().height is 15
> property value is 0
> property visibleSize is 800
> property totalSize is 800
> property maximum is 0
> 
> printing code here: http://paste.lisp.org/+2QW4, hope this helps

The difference in frameRect() is intentional. The frameRect is relative to the GraphicsContext which the scrollbar will be drawn. In impl thread the scrollbar has its exclusive GraphicsContext, so the frameRect should be exactly the bound of the texture.

For the scroll range I feel the values reported from the main thread is weird. Seems like there is a viewport size change, and the new size is propagated to the layers before the Scrollbar. (means the values calculated from impl thread is more up-to-date)

> > Source/WebCore/page/scrolling/chromium/ScrollingCoordinatorChromium.cpp:90
> > +    if (scrollbar->isCustomScrollbar() /* && CCProxy::hasImplThread() */) { // FIXME: also filter out single thread case when we
> 
> looks like this comment trailed off. The idea is to add this check back before landing, right?
> 
> this logic is a bit off - i think you want isCustomScrollbar() || !CCProxy::hasImplThread(). if we are a custom scrollbar _or_ if we're in single threaded mode, disable compositor scrollbar painting

done. what an embarrassing mistake. lol

> > Source/WebCore/page/scrolling/chromium/ScrollingCoordinatorChromium.cpp:107
> > +    if (!scrollLayer) // workaround calling order problem
> 
> Comment seems incomplete.  I think this should be a FIXME, right?

done

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list