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 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 outer_viewport_scroll_layer_.get() ? outer_viewport_scroll_layer_->id() | 356 outer_viewport_scroll_layer_.get() ? outer_viewport_scroll_layer_->id() |
357 : Layer::INVALID_ID); | 357 : Layer::INVALID_ID); |
358 } else { | 358 } else { |
359 sync_tree->ClearViewportLayers(); | 359 sync_tree->ClearViewportLayers(); |
360 } | 360 } |
361 | 361 |
362 sync_tree->RegisterSelection(selection_start_, selection_end_); | 362 sync_tree->RegisterSelection(selection_start_, selection_end_); |
363 | 363 |
364 sync_tree->PushPageScaleFromMainThread( | 364 sync_tree->PushPageScaleFromMainThread( |
365 page_scale_factor_, min_page_scale_factor_, max_page_scale_factor_); | 365 page_scale_factor_, min_page_scale_factor_, max_page_scale_factor_); |
| 366 sync_tree->elastic_overscroll()->PushFromMainThread(elastic_overscroll_); |
| 367 if (sync_tree->IsActiveTree()) |
| 368 sync_tree->elastic_overscroll()->PushPendingToActive(); |
366 | 369 |
367 sync_tree->PassSwapPromises(&swap_promise_list_); | 370 sync_tree->PassSwapPromises(&swap_promise_list_); |
368 | 371 |
369 // Track the change in top controls height to offset the top_controls_delta | 372 // Track the change in top controls height to offset the top_controls_delta |
370 // properly. This is so that the top controls offset will be maintained | 373 // properly. This is so that the top controls offset will be maintained |
371 // across height changes. | 374 // across height changes. |
372 float top_controls_height_delta = | 375 float top_controls_height_delta = |
373 sync_tree->top_controls_height() - top_controls_height_; | 376 sync_tree->top_controls_height() - top_controls_height_; |
374 | 377 |
375 sync_tree->set_top_controls_shrink_blink_size( | 378 sync_tree->set_top_controls_shrink_blink_size( |
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
868 | 871 |
869 TRACE_EVENT0("cc", "LayerTreeHost::UpdateLayers::CalcDrawProps"); | 872 TRACE_EVENT0("cc", "LayerTreeHost::UpdateLayers::CalcDrawProps"); |
870 bool can_render_to_separate_surface = true; | 873 bool can_render_to_separate_surface = true; |
871 // TODO(vmpstr): Passing 0 as the current render surface layer list id means | 874 // TODO(vmpstr): Passing 0 as the current render surface layer list id means |
872 // that we won't be able to detect if a layer is part of |update_list|. | 875 // that we won't be able to detect if a layer is part of |update_list|. |
873 // Change this if this information is required. | 876 // Change this if this information is required. |
874 int render_surface_layer_list_id = 0; | 877 int render_surface_layer_list_id = 0; |
875 LayerTreeHostCommon::CalcDrawPropsMainInputs inputs( | 878 LayerTreeHostCommon::CalcDrawPropsMainInputs inputs( |
876 root_layer, device_viewport_size(), gfx::Transform(), | 879 root_layer, device_viewport_size(), gfx::Transform(), |
877 device_scale_factor_, page_scale_factor_, page_scale_layer, | 880 device_scale_factor_, page_scale_factor_, page_scale_layer, |
| 881 elastic_overscroll_, overscroll_elasticity_layer_.get(), |
878 GetRendererCapabilities().max_texture_size, settings_.can_use_lcd_text, | 882 GetRendererCapabilities().max_texture_size, settings_.can_use_lcd_text, |
879 settings_.layers_always_allowed_lcd_text, | 883 settings_.layers_always_allowed_lcd_text, |
880 can_render_to_separate_surface, | 884 can_render_to_separate_surface, |
881 settings_.layer_transforms_should_scale_layer_contents, &update_list, | 885 settings_.layer_transforms_should_scale_layer_contents, &update_list, |
882 render_surface_layer_list_id); | 886 render_surface_layer_list_id); |
883 LayerTreeHostCommon::CalculateDrawProperties(&inputs); | 887 LayerTreeHostCommon::CalculateDrawProperties(&inputs); |
884 | 888 |
885 if (total_frames_used_for_lcd_text_metrics_ <= | 889 if (total_frames_used_for_lcd_text_metrics_ <= |
886 kTotalFramesToUseForLCDTextMetrics) { | 890 kTotalFramesToUseForLCDTextMetrics) { |
887 LayerTreeHostCommon::CallFunctionForSubtree( | 891 LayerTreeHostCommon::CallFunctionForSubtree( |
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1119 inner_viewport_scroll_delta += info->scrolls[i].scroll_delta; | 1123 inner_viewport_scroll_delta += info->scrolls[i].scroll_delta; |
1120 } else { | 1124 } else { |
1121 layer->SetScrollOffsetFromImplSide( | 1125 layer->SetScrollOffsetFromImplSide( |
1122 gfx::ScrollOffsetWithDelta(layer->scroll_offset(), | 1126 gfx::ScrollOffsetWithDelta(layer->scroll_offset(), |
1123 info->scrolls[i].scroll_delta)); | 1127 info->scrolls[i].scroll_delta)); |
1124 } | 1128 } |
1125 } | 1129 } |
1126 } | 1130 } |
1127 | 1131 |
1128 if (!inner_viewport_scroll_delta.IsZero() || | 1132 if (!inner_viewport_scroll_delta.IsZero() || |
1129 !outer_viewport_scroll_delta.IsZero() || | 1133 !outer_viewport_scroll_delta.IsZero() || info->page_scale_delta != 1.f || |
1130 info->page_scale_delta != 1.f || | 1134 !info->elastic_overscroll_delta.IsZero() || info->top_controls_delta) { |
1131 info->top_controls_delta) { | |
1132 // Preemptively apply the scroll offset and scale delta here before sending | 1135 // Preemptively apply the scroll offset and scale delta here before sending |
1133 // it to the client. If the client comes back and sets it to the same | 1136 // it to the client. If the client comes back and sets it to the same |
1134 // value, then the layer can early out without needing a full commit. | 1137 // value, then the layer can early out without needing a full commit. |
1135 if (inner_viewport_scroll_layer_.get()) { | 1138 if (inner_viewport_scroll_layer_.get()) { |
1136 inner_viewport_scroll_layer_->SetScrollOffsetFromImplSide( | 1139 inner_viewport_scroll_layer_->SetScrollOffsetFromImplSide( |
1137 gfx::ScrollOffsetWithDelta( | 1140 gfx::ScrollOffsetWithDelta( |
1138 inner_viewport_scroll_layer_->scroll_offset(), | 1141 inner_viewport_scroll_layer_->scroll_offset(), |
1139 inner_viewport_scroll_delta)); | 1142 inner_viewport_scroll_delta)); |
1140 } | 1143 } |
1141 | 1144 |
1142 if (outer_viewport_scroll_layer_.get()) { | 1145 if (outer_viewport_scroll_layer_.get()) { |
1143 outer_viewport_scroll_layer_->SetScrollOffsetFromImplSide( | 1146 outer_viewport_scroll_layer_->SetScrollOffsetFromImplSide( |
1144 gfx::ScrollOffsetWithDelta( | 1147 gfx::ScrollOffsetWithDelta( |
1145 outer_viewport_scroll_layer_->scroll_offset(), | 1148 outer_viewport_scroll_layer_->scroll_offset(), |
1146 outer_viewport_scroll_delta)); | 1149 outer_viewport_scroll_delta)); |
1147 } | 1150 } |
1148 | 1151 |
1149 ApplyPageScaleDeltaFromImplSide(info->page_scale_delta); | 1152 ApplyPageScaleDeltaFromImplSide(info->page_scale_delta); |
| 1153 elastic_overscroll_ += info->elastic_overscroll_delta; |
1150 if (!settings_.use_pinch_virtual_viewport) { | 1154 if (!settings_.use_pinch_virtual_viewport) { |
1151 client_->ApplyViewportDeltas( | 1155 client_->ApplyViewportDeltas( |
1152 inner_viewport_scroll_delta + outer_viewport_scroll_delta, | 1156 inner_viewport_scroll_delta + outer_viewport_scroll_delta, |
1153 info->page_scale_delta, | 1157 info->page_scale_delta, |
1154 info->top_controls_delta); | 1158 info->top_controls_delta); |
1155 } else { | 1159 } else { |
| 1160 // TODO(ccameron): pass the elastic overscroll here so that input events |
| 1161 // may be translated appropriately. |
1156 client_->ApplyViewportDeltas( | 1162 client_->ApplyViewportDeltas( |
1157 inner_viewport_scroll_delta, | 1163 inner_viewport_scroll_delta, |
1158 outer_viewport_scroll_delta, | 1164 outer_viewport_scroll_delta, |
1159 info->page_scale_delta, | 1165 info->page_scale_delta, |
1160 info->top_controls_delta); | 1166 info->top_controls_delta); |
1161 } | 1167 } |
1162 } | 1168 } |
1163 } | 1169 } |
1164 | 1170 |
1165 void LayerTreeHost::StartRateLimiter() { | 1171 void LayerTreeHost::StartRateLimiter() { |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1386 bool children_need_begin_frames) const { | 1392 bool children_need_begin_frames) const { |
1387 proxy_->SetChildrenNeedBeginFrames(children_need_begin_frames); | 1393 proxy_->SetChildrenNeedBeginFrames(children_need_begin_frames); |
1388 } | 1394 } |
1389 | 1395 |
1390 void LayerTreeHost::SendBeginFramesToChildren( | 1396 void LayerTreeHost::SendBeginFramesToChildren( |
1391 const BeginFrameArgs& args) const { | 1397 const BeginFrameArgs& args) const { |
1392 client_->SendBeginFramesToChildren(args); | 1398 client_->SendBeginFramesToChildren(args); |
1393 } | 1399 } |
1394 | 1400 |
1395 } // namespace cc | 1401 } // namespace cc |
OLD | NEW |