| Index: cc/layer_tree_host_impl.cc
|
| diff --git a/cc/layer_tree_host_impl.cc b/cc/layer_tree_host_impl.cc
|
| index e357999dcb264deb268a5c190e8f2662127359c6..3cbd76e3bee99e187f1fb0f37f6fd1dc61d89065 100644
|
| --- a/cc/layer_tree_host_impl.cc
|
| +++ b/cc/layer_tree_host_impl.cc
|
| @@ -234,6 +234,10 @@ bool LayerTreeHostImpl::canDraw()
|
| TRACE_EVENT_INSTANT0("cc", "LayerTreeHostImpl::canDraw empty viewport");
|
| return false;
|
| }
|
| + if (deviceViewportSize() != activeTree()->device_viewport_size()) {
|
| + TRACE_EVENT_INSTANT0("cc", "LayerTreeHostImpl::canDraw viewport resize incomplete");
|
| + return false;
|
| + }
|
| if (!m_renderer) {
|
| TRACE_EVENT_INSTANT0("cc", "LayerTreeHostImpl::canDraw no renderer");
|
| return false;
|
| @@ -286,7 +290,7 @@ void LayerTreeHostImpl::startPageScaleAnimation(gfx::Vector2d targetOffset, bool
|
| scrollTotal.Scale(1 / activeTree()->page_scale_factor());
|
| scaledScrollableSize.Scale(1 / activeTree()->page_scale_factor());
|
| }
|
| - gfx::SizeF viewportSize = gfx::ScaleSize(m_deviceViewportSize, 1 / m_deviceScaleFactor);
|
| + gfx::SizeF viewportSize = gfx::ScaleSize(deviceViewportSize(), 1 / m_deviceScaleFactor);
|
|
|
| double startTimeSeconds = (startTime - base::TimeTicks()).InSecondsF();
|
| m_pageScaleAnimation = PageScaleAnimation::create(scrollTotal, activeTree()->total_page_scale_factor(), viewportSize, scaledScrollableSize, startTimeSeconds);
|
| @@ -868,7 +872,16 @@ bool LayerTreeHostImpl::swapBuffers()
|
|
|
| const gfx::Size& LayerTreeHostImpl::deviceViewportSize() const
|
| {
|
| - return m_deviceViewportSize;
|
| + if (pendingTree())
|
| + return pendingTree()->device_viewport_size();
|
| + return activeTree()->device_viewport_size();
|
| +}
|
| +
|
| +const gfx::Size& LayerTreeHostImpl::layoutViewportSize() const
|
| +{
|
| + if (pendingTree())
|
| + return pendingTree()->layout_viewport_size();
|
| + return activeTree()->layout_viewport_size();
|
| }
|
|
|
| const LayerTreeSettings& LayerTreeHostImpl::settings() const
|
| @@ -1091,18 +1104,10 @@ bool LayerTreeHostImpl::initializeRenderer(scoped_ptr<OutputSurface> outputSurfa
|
|
|
| void LayerTreeHostImpl::setViewportSize(const gfx::Size& layoutViewportSize, const gfx::Size& deviceViewportSize)
|
| {
|
| - if (layoutViewportSize == m_layoutViewportSize && deviceViewportSize == m_deviceViewportSize)
|
| - return;
|
| -
|
| - m_layoutViewportSize = layoutViewportSize;
|
| - m_deviceViewportSize = deviceViewportSize;
|
| -
|
| - updateMaxScrollOffset();
|
| -
|
| - if (m_renderer)
|
| - m_renderer->viewportChanged();
|
| -
|
| - m_client->onCanDrawStateChanged(canDraw());
|
| + if (m_settings.implSidePainting)
|
| + pendingTree()->SetViewportSize(layoutViewportSize, deviceViewportSize);
|
| + else
|
| + activeTree()->SetViewportSize(layoutViewportSize, deviceViewportSize);
|
| }
|
|
|
| static void adjustScrollsForPageScaleChange(LayerImpl* layerImpl, float pageScaleChange)
|
| @@ -1428,7 +1433,7 @@ void LayerTreeHostImpl::computePinchZoomDeltas(ScrollAndScaleSet* scrollInfo)
|
| gfx::Vector2dF scrollEnd = scrollBegin + anchorOffset;
|
| scrollEnd.Scale(activeTree()->min_page_scale_factor() / scaleBegin);
|
| scrollEnd -= anchorOffset;
|
| - scrollEnd.ClampToMax(gfx::RectF(scaledScrollableSize).bottom_right() - gfx::Rect(m_deviceViewportSize).bottom_right());
|
| + scrollEnd.ClampToMax(gfx::RectF(scaledScrollableSize).bottom_right() - gfx::Rect(deviceViewportSize()).bottom_right());
|
| scrollEnd.ClampToMin(gfx::Vector2d());
|
| scrollEnd.Scale(1 / pageScaleDeltaToSend);
|
| scrollEnd.Scale(m_deviceScaleFactor);
|
| @@ -1718,7 +1723,7 @@ scoped_ptr<base::Value> LayerTreeHostImpl::frameStateAsValue() const
|
| {
|
| scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue());
|
| state->SetString("lthi_id", StringPrintf("%p", this));
|
| - state->Set("device_viewport_size", MathUtil::asValue(m_deviceViewportSize).release());
|
| + state->Set("device_viewport_size", MathUtil::asValue(m_activeTree->device_viewport_size()).release());
|
| if (m_tileManager)
|
| state->Set("tiles", m_tileManager->AllTilesAsValue().release());
|
| return state.PassAs<base::Value>();
|
|
|