| 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 |