[Webkit-unassigned] [Bug 73350] [chromium] Allow scrolling non-root layers in the compositor thread

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Dec 1 11:24:45 PST 2011


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





--- Comment #5 from Adrienne Walker <enne at google.com>  2011-12-01 11:24:45 PST ---
(From update of attachment 117426)
View in context: https://bugs.webkit.org/attachment.cgi?id=117426&action=review

> Source/WebCore/platform/graphics/chromium/LayerChromium.cpp:302
> +    layer->setMaxScrollPosition(m_maxScrollPosition);

How does this interact with CCLayerTreeHostImpl::updateMaxScrollPosition calculating and overwriting the max scroll independently on the impl thread, taking page scale into account? This patch probably needs a test where page scale delta != 1.

> Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:313
> +    if (!layerImpl->bounds().isEmpty()) {
> +        IntPoint contentPoint(layerImpl->screenSpaceTransform().inverse().mapPoint(windowPoint));
> +        if (!IntRect(IntPoint::zero(), layerImpl->bounds()).contains(contentPoint))
> +            return 0;
> +    }

Maybe I'm misreading this, but if a layer has valid bounds but the point is not contained, then all of its children are skipped? The layer tree is not a bounding box hierarchy, so I think you still need to check the children.  Can you add a test for this case?

> Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:350
> +        // Reset the pending delta completely to zero if the layer was able to move in that direction. This is
> +        // to ensure it is possible to scroll exactly to the beginning or end of the scroll area regardless of
> +        // the scroll step.

Does this cause any hitch when flinging?

> Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:440
> -    bool didMove = m_scrollLayerImpl && (!m_scrollLayerImpl->scrollDelta().isZero() || m_pageScaleDelta != 1.0f);
> -    if (!didMove || m_pinchGestureActive) {
> +    if (m_pinchGestureActive || !collectScrollDeltas(scrollInfo.get(), m_rootLayerImpl.get())) {

Can you explain why you dropped the m_pageScaleDelta check here? I think that's needed so that pinch zooms are sent back even when there are no scrolls.

-- 
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