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..c88efe6993fb3cb27047681df3cd5a982f7c09e5 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); |
danakj
2013/02/13 06:51:36
Is this right? The rootScrollLayer() it's using he
aelias_OOO_until_Jul13
2013/02/13 07:37:08
I definitely want pendingTree size here. pageScal
|
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()); |
danakj
2013/02/13 06:51:36
Should this be the active tree's deviceViewportSiz
aelias_OOO_until_Jul13
2013/02/13 07:37:08
This is dead code due for deletion, doesn't matter
|
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(deviceViewportSize()).release()); |
danakj
2013/02/13 06:51:36
This should be the active tree too right?
I feel
aelias_OOO_until_Jul13
2013/02/13 07:37:08
If it drew a frame, then active tree and pending t
|
if (m_tileManager) |
state->Set("tiles", m_tileManager->AllTilesAsValue().release()); |
return state.PassAs<base::Value>(); |