Chromium Code Reviews| Index: cc/layer_tree_host_impl.cc |
| diff --git a/cc/layer_tree_host_impl.cc b/cc/layer_tree_host_impl.cc |
| index f4324bc55a62c677fadd8b4c415bf07b6fcd9333..620ecf09633e15723804a96ce4fd5dbf8221c18d 100644 |
| --- a/cc/layer_tree_host_impl.cc |
| +++ b/cc/layer_tree_host_impl.cc |
| @@ -298,15 +298,13 @@ bool LayerTreeHostImpl::haveTouchEventHandlersAt(const gfx::Point& viewportPoint |
| if (!ensureRenderSurfaceLayerList()) |
| return false; |
| - gfx::PointF deviceViewportPoint = gfx::ScalePoint(viewportPoint, m_deviceScaleFactor); |
|
danakj
2013/01/22 23:42:15
This looks like it will break hidpi. The findLayer
aelias_OOO_until_Jul13
2013/01/24 00:47:02
Removed this change, it was speculative.
|
| - |
| // First find out which layer was hit from the saved list of visible layers |
| // in the most recent frame. |
| - LayerImpl* layerImpl = LayerTreeHostCommon::findLayerThatIsHitByPoint(deviceViewportPoint, activeTree()->RenderSurfaceLayerList()); |
| + LayerImpl* layerImpl = LayerTreeHostCommon::findLayerThatIsHitByPoint(viewportPoint, activeTree()->RenderSurfaceLayerList()); |
| // Walk up the hierarchy and look for a layer with a touch event handler region that the given point hits. |
| for (; layerImpl; layerImpl = layerImpl->parent()) { |
| - if (LayerTreeHostCommon::layerHasTouchEventHandlersAt(deviceViewportPoint,layerImpl)) |
| + if (LayerTreeHostCommon::layerHasTouchEventHandlersAt(viewportPoint, layerImpl)) |
| return true; |
| } |
| @@ -772,7 +770,7 @@ CompositorFrameMetadata LayerTreeHostImpl::makeCompositorFrameMetadata() const |
| { |
| CompositorFrameMetadata metadata; |
| metadata.page_scale_factor = m_pinchZoomViewport.total_page_scale_factor(); |
| - metadata.viewport_size = m_pinchZoomViewport.ZoomedViewport().size(); |
| + metadata.viewport_size = m_pinchZoomViewport.LayoutSpaceViewportSize(); |
| metadata.root_layer_size = activeTree()->ScrollableSize(); |
| metadata.min_page_scale_factor = m_pinchZoomViewport.min_page_scale_factor(); |
| metadata.max_page_scale_factor = m_pinchZoomViewport.max_page_scale_factor(); |
| @@ -1229,15 +1227,10 @@ static gfx::Vector2dF scrollLayerWithViewportSpaceDelta(PinchZoomViewport* viewp |
| // Apply the scroll delta. |
| gfx::Vector2dF previousDelta = layerImpl.scrollDelta(); |
| - gfx::Vector2dF unscrolled = layerImpl.scrollBy(localEndPoint - localStartPoint); |
| - gfx::Vector2dF scrollAmount = localEndPoint - localStartPoint; |
| - |
| - gfx::Vector2dF viewportAppliedPan; |
| - if (viewport) |
| - viewportAppliedPan = unscrolled - viewport->ApplyScroll(unscrolled); |
| + layerImpl.scrollBy(localEndPoint - localStartPoint); |
| // Get the end point in the layer's content space so we can apply its screenSpaceTransform. |
| - gfx::PointF actualLocalEndPoint = localStartPoint + layerImpl.scrollDelta() + viewportAppliedPan - previousDelta; |
| + gfx::PointF actualLocalEndPoint = localStartPoint + layerImpl.scrollDelta() - previousDelta; |
|
danakj
2013/01/22 23:42:15
We definitely have some tests for this code, does
|
| gfx::PointF actualLocalContentEndPoint = gfx::ScalePoint(actualLocalEndPoint, 1 / widthScale, 1 / heightScale); |
| // Calculate the applied scroll delta in viewport space coordinates. |
| @@ -1355,8 +1348,7 @@ void LayerTreeHostImpl::pinchGestureUpdate(float magnifyDelta, gfx::Point anchor |
| move.Scale(1 / m_pinchZoomViewport.page_scale_factor()); |
| } |
| - gfx::Vector2dF scrollOverflow = m_settings.pageScalePinchZoomEnabled ? m_pinchZoomViewport.ApplyScroll(move) : move; |
| - rootScrollLayer()->scrollBy(scrollOverflow); |
| + rootScrollLayer()->scrollBy(move); |
| if (rootScrollLayer()->scrollbarAnimationController()) |
| rootScrollLayer()->scrollbarAnimationController()->didPinchGestureUpdate(base::TimeTicks::Now()); |
| @@ -1435,8 +1427,8 @@ static void collectScrollDeltas(ScrollAndScaleSet* scrollInfo, LayerImpl* layerI |
| if (!layerImpl) |
| return; |
| - if (!layerImpl->scrollDelta().IsZero()) { |
| - gfx::Vector2d scrollDelta = gfx::ToFlooredVector2d(layerImpl->scrollDelta()); |
| + gfx::Vector2d scrollDelta = gfx::ToFlooredVector2d(layerImpl->scrollDelta()); |
| + if (!scrollDelta.IsZero()) { |
| LayerTreeHostCommon::ScrollUpdateInfo scroll; |
| scroll.layerId = layerImpl->id(); |
| scroll.scrollDelta = scrollDelta; |
| @@ -1452,12 +1444,10 @@ scoped_ptr<ScrollAndScaleSet> LayerTreeHostImpl::processScrollDeltas() |
| { |
| scoped_ptr<ScrollAndScaleSet> scrollInfo(new ScrollAndScaleSet()); |
| - if (m_pinchGestureActive || m_pageScaleAnimation) { |
| + if (!m_settings.pageScalePinchZoomEnabled && (m_pinchGestureActive || m_pageScaleAnimation)) { |
| scrollInfo->pageScaleDelta = 1; |
| m_pinchZoomViewport.set_sent_page_scale_delta(1); |
| - // FIXME(aelias): Make pinch-zoom painting optimization compatible with |
| - // compositor-side scaling. |
| - if (!m_settings.pageScalePinchZoomEnabled && m_pinchGestureActive) |
| + if (m_pinchGestureActive) |
| computePinchZoomDeltas(scrollInfo.get()); |
| else if (m_pageScaleAnimation.get()) |
| computeDoubleTapZoomDeltas(scrollInfo.get()); |