OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <stack> | 8 #include <stack> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 1067 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1078 for (size_t i = 0; i < info->scrolls.size(); ++i) { | 1078 for (size_t i = 0; i < info->scrolls.size(); ++i) { |
1079 Layer* layer = LayerTreeHostCommon::FindLayerInSubtree( | 1079 Layer* layer = LayerTreeHostCommon::FindLayerInSubtree( |
1080 root_layer_.get(), info->scrolls[i].layer_id); | 1080 root_layer_.get(), info->scrolls[i].layer_id); |
1081 if (!layer) | 1081 if (!layer) |
1082 continue; | 1082 continue; |
1083 if (layer == outer_viewport_scroll_layer_.get()) { | 1083 if (layer == outer_viewport_scroll_layer_.get()) { |
1084 outer_viewport_scroll_delta += info->scrolls[i].scroll_delta; | 1084 outer_viewport_scroll_delta += info->scrolls[i].scroll_delta; |
1085 } else if (layer == inner_viewport_scroll_layer_.get()) { | 1085 } else if (layer == inner_viewport_scroll_layer_.get()) { |
1086 inner_viewport_scroll_delta += info->scrolls[i].scroll_delta; | 1086 inner_viewport_scroll_delta += info->scrolls[i].scroll_delta; |
1087 } else { | 1087 } else { |
1088 layer->SetScrollOffsetFromImplSide(layer->scroll_offset() + | 1088 layer->SetScrollOffsetFromImplSide( |
1089 info->scrolls[i].scroll_delta); | 1089 gfx::ScrollOffsetWithDelta(layer->scroll_offset(), |
| 1090 info->scrolls[i].scroll_delta)); |
1090 } | 1091 } |
1091 } | 1092 } |
1092 | 1093 |
1093 if (!inner_viewport_scroll_delta.IsZero() || | 1094 if (!inner_viewport_scroll_delta.IsZero() || |
1094 !outer_viewport_scroll_delta.IsZero() || | 1095 !outer_viewport_scroll_delta.IsZero() || |
1095 info->page_scale_delta != 1.f || | 1096 info->page_scale_delta != 1.f || |
1096 info->top_controls_delta) { | 1097 info->top_controls_delta) { |
1097 // SetScrollOffsetFromImplSide above could have destroyed the tree, | 1098 // SetScrollOffsetFromImplSide above could have destroyed the tree, |
1098 // so re-get this layer before doing anything to it. | 1099 // so re-get this layer before doing anything to it. |
1099 | 1100 |
1100 DCHECK(inner_viewport_scroll_layer_.get()); // We should always have this. | 1101 DCHECK(inner_viewport_scroll_layer_.get()); // We should always have this. |
1101 | 1102 |
1102 // Preemptively apply the scroll offset and scale delta here before sending | 1103 // Preemptively apply the scroll offset and scale delta here before sending |
1103 // it to the client. If the client comes back and sets it to the same | 1104 // it to the client. If the client comes back and sets it to the same |
1104 // value, then the layer can early out without needing a full commit. | 1105 // value, then the layer can early out without needing a full commit. |
1105 inner_viewport_scroll_layer_->SetScrollOffsetFromImplSide( | 1106 inner_viewport_scroll_layer_->SetScrollOffsetFromImplSide( |
1106 inner_viewport_scroll_layer_->scroll_offset() + | 1107 gfx::ScrollOffsetWithDelta( |
1107 inner_viewport_scroll_delta); | 1108 inner_viewport_scroll_layer_->scroll_offset(), |
| 1109 inner_viewport_scroll_delta)); |
1108 if (outer_viewport_scroll_layer_.get()) { | 1110 if (outer_viewport_scroll_layer_.get()) { |
1109 outer_viewport_scroll_layer_->SetScrollOffsetFromImplSide( | 1111 outer_viewport_scroll_layer_->SetScrollOffsetFromImplSide( |
1110 outer_viewport_scroll_layer_->scroll_offset() + | 1112 gfx::ScrollOffsetWithDelta( |
1111 outer_viewport_scroll_delta); | 1113 outer_viewport_scroll_layer_->scroll_offset(), |
| 1114 outer_viewport_scroll_delta)); |
1112 } | 1115 } |
1113 | 1116 |
1114 ApplyPageScaleDeltaFromImplSide(info->page_scale_delta); | 1117 ApplyPageScaleDeltaFromImplSide(info->page_scale_delta); |
1115 if (!outer_viewport_scroll_layer_.get()) { | 1118 if (!outer_viewport_scroll_layer_.get()) { |
1116 client_->ApplyViewportDeltas( | 1119 client_->ApplyViewportDeltas( |
1117 inner_viewport_scroll_delta + outer_viewport_scroll_delta, | 1120 inner_viewport_scroll_delta + outer_viewport_scroll_delta, |
1118 info->page_scale_delta, | 1121 info->page_scale_delta, |
1119 info->top_controls_delta); | 1122 info->top_controls_delta); |
1120 } else { | 1123 } else { |
1121 client_->ApplyViewportDeltas( | 1124 client_->ApplyViewportDeltas( |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1331 swap_promise_list_.push_back(swap_promise.Pass()); | 1334 swap_promise_list_.push_back(swap_promise.Pass()); |
1332 } | 1335 } |
1333 | 1336 |
1334 void LayerTreeHost::BreakSwapPromises(SwapPromise::DidNotSwapReason reason) { | 1337 void LayerTreeHost::BreakSwapPromises(SwapPromise::DidNotSwapReason reason) { |
1335 for (size_t i = 0; i < swap_promise_list_.size(); i++) | 1338 for (size_t i = 0; i < swap_promise_list_.size(); i++) |
1336 swap_promise_list_[i]->DidNotSwap(reason); | 1339 swap_promise_list_[i]->DidNotSwap(reason); |
1337 swap_promise_list_.clear(); | 1340 swap_promise_list_.clear(); |
1338 } | 1341 } |
1339 | 1342 |
1340 } // namespace cc | 1343 } // namespace cc |
OLD | NEW |