| Index: cc/trees/layer_tree_host.cc
|
| diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc
|
| index eed1e5a7e151e74942e0b78d54b96f38a2f2874d..38795bb3c1698f8565bd0b53014cf347508d58ff 100644
|
| --- a/cc/trees/layer_tree_host.cc
|
| +++ b/cc/trees/layer_tree_host.cc
|
| @@ -1091,11 +1091,11 @@ void LayerTreeHost::ApplyScrollAndScale(ScrollAndScaleSet* info) {
|
| // SetScrollOffsetFromImplSide above could have destroyed the tree,
|
| // so re-get this layer before doing anything to it.
|
|
|
| + DCHECK(inner_viewport_scroll_layer_.get()); // We should always have this.
|
| +
|
| // Preemptively apply the scroll offset and scale delta here before sending
|
| // it to the client. If the client comes back and sets it to the same
|
| // value, then the layer can early out without needing a full commit.
|
| - DCHECK(inner_viewport_scroll_layer_.get()); // We should always have this.
|
| -
|
| inner_viewport_scroll_layer_->SetScrollOffsetFromImplSide(
|
| inner_viewport_scroll_layer_->scroll_offset() +
|
| inner_viewport_scroll_delta);
|
| @@ -1104,12 +1104,20 @@ void LayerTreeHost::ApplyScrollAndScale(ScrollAndScaleSet* info) {
|
| outer_viewport_scroll_layer_->scroll_offset() +
|
| outer_viewport_scroll_delta);
|
| }
|
| - ApplyPageScaleDeltaFromImplSide(info->page_scale_delta);
|
|
|
| - client_->ApplyViewportDeltas(
|
| - inner_viewport_scroll_delta + outer_viewport_scroll_delta,
|
| - info->page_scale_delta,
|
| - info->top_controls_delta);
|
| + ApplyPageScaleDeltaFromImplSide(info->page_scale_delta);
|
| + if (!outer_viewport_scroll_layer_.get()) {
|
| + client_->ApplyViewportDeltas(
|
| + inner_viewport_scroll_delta + outer_viewport_scroll_delta,
|
| + info->page_scale_delta,
|
| + info->top_controls_delta);
|
| + } else {
|
| + client_->ApplyViewportDeltas(
|
| + inner_viewport_scroll_delta,
|
| + outer_viewport_scroll_delta,
|
| + info->page_scale_delta,
|
| + info->top_controls_delta);
|
| + }
|
| }
|
| }
|
|
|
|
|