| 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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 using_shared_memory_resources(false) {} | 64 using_shared_memory_resources(false) {} |
| 65 | 65 |
| 66 RendererCapabilities::~RendererCapabilities() {} | 66 RendererCapabilities::~RendererCapabilities() {} |
| 67 | 67 |
| 68 scoped_ptr<LayerTreeHost> LayerTreeHost::CreateThreaded( | 68 scoped_ptr<LayerTreeHost> LayerTreeHost::CreateThreaded( |
| 69 LayerTreeHostClient* client, | 69 LayerTreeHostClient* client, |
| 70 SharedBitmapManager* manager, | 70 SharedBitmapManager* manager, |
| 71 const LayerTreeSettings& settings, | 71 const LayerTreeSettings& settings, |
| 72 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, | 72 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
| 73 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { | 73 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { |
| 74 DCHECK(main_task_runner); | 74 DCHECK(main_task_runner.get()); |
| 75 DCHECK(impl_task_runner); | 75 DCHECK(impl_task_runner.get()); |
| 76 scoped_ptr<LayerTreeHost> layer_tree_host( | 76 scoped_ptr<LayerTreeHost> layer_tree_host( |
| 77 new LayerTreeHost(client, manager, settings)); | 77 new LayerTreeHost(client, manager, settings)); |
| 78 layer_tree_host->InitializeThreaded(main_task_runner, impl_task_runner); | 78 layer_tree_host->InitializeThreaded(main_task_runner, impl_task_runner); |
| 79 return layer_tree_host.Pass(); | 79 return layer_tree_host.Pass(); |
| 80 } | 80 } |
| 81 | 81 |
| 82 scoped_ptr<LayerTreeHost> LayerTreeHost::CreateSingleThreaded( | 82 scoped_ptr<LayerTreeHost> LayerTreeHost::CreateSingleThreaded( |
| 83 LayerTreeHostClient* client, | 83 LayerTreeHostClient* client, |
| 84 LayerTreeHostSingleThreadClient* single_thread_client, | 84 LayerTreeHostSingleThreadClient* single_thread_client, |
| 85 SharedBitmapManager* manager, | 85 SharedBitmapManager* manager, |
| (...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 LayerImpl* hud_impl = LayerTreeHostCommon::FindLayerInSubtree( | 318 LayerImpl* hud_impl = LayerTreeHostCommon::FindLayerInSubtree( |
| 319 sync_tree->root_layer(), hud_layer_->id()); | 319 sync_tree->root_layer(), hud_layer_->id()); |
| 320 sync_tree->set_hud_layer(static_cast<HeadsUpDisplayLayerImpl*>(hud_impl)); | 320 sync_tree->set_hud_layer(static_cast<HeadsUpDisplayLayerImpl*>(hud_impl)); |
| 321 } else { | 321 } else { |
| 322 sync_tree->set_hud_layer(NULL); | 322 sync_tree->set_hud_layer(NULL); |
| 323 } | 323 } |
| 324 | 324 |
| 325 sync_tree->set_background_color(background_color_); | 325 sync_tree->set_background_color(background_color_); |
| 326 sync_tree->set_has_transparent_background(has_transparent_background_); | 326 sync_tree->set_has_transparent_background(has_transparent_background_); |
| 327 | 327 |
| 328 if (page_scale_layer_ && inner_viewport_scroll_layer_) { | 328 if (page_scale_layer_.get() && inner_viewport_scroll_layer_.get()) { |
| 329 sync_tree->SetViewportLayersFromIds( | 329 sync_tree->SetViewportLayersFromIds(page_scale_layer_->id(), |
| 330 page_scale_layer_->id(), | 330 inner_viewport_scroll_layer_->id(), |
| 331 inner_viewport_scroll_layer_->id(), | 331 outer_viewport_scroll_layer_.get() |
| 332 outer_viewport_scroll_layer_ ? outer_viewport_scroll_layer_->id() | 332 ? outer_viewport_scroll_layer_->id() |
| 333 : Layer::INVALID_ID); | 333 : Layer::INVALID_ID); |
| 334 } else { | 334 } else { |
| 335 sync_tree->ClearViewportLayers(); | 335 sync_tree->ClearViewportLayers(); |
| 336 } | 336 } |
| 337 | 337 |
| 338 sync_tree->RegisterSelection(selection_start_, selection_end_); | 338 sync_tree->RegisterSelection(selection_start_, selection_end_); |
| 339 | 339 |
| 340 float page_scale_delta = | 340 float page_scale_delta = |
| 341 sync_tree->page_scale_delta() / sync_tree->sent_page_scale_delta(); | 341 sync_tree->page_scale_delta() / sync_tree->sent_page_scale_delta(); |
| 342 sync_tree->SetPageScaleValues(page_scale_factor_, | 342 sync_tree->SetPageScaleValues(page_scale_factor_, |
| 343 min_page_scale_factor_, | 343 min_page_scale_factor_, |
| (...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 789 bool LayerTreeHost::UpdateLayers(Layer* root_layer, | 789 bool LayerTreeHost::UpdateLayers(Layer* root_layer, |
| 790 ResourceUpdateQueue* queue) { | 790 ResourceUpdateQueue* queue) { |
| 791 TRACE_EVENT1("cc", "LayerTreeHost::UpdateLayers", | 791 TRACE_EVENT1("cc", "LayerTreeHost::UpdateLayers", |
| 792 "source_frame_number", source_frame_number()); | 792 "source_frame_number", source_frame_number()); |
| 793 | 793 |
| 794 RenderSurfaceLayerList update_list; | 794 RenderSurfaceLayerList update_list; |
| 795 { | 795 { |
| 796 UpdateHudLayer(); | 796 UpdateHudLayer(); |
| 797 | 797 |
| 798 Layer* root_scroll = FindFirstScrollableLayer(root_layer); | 798 Layer* root_scroll = FindFirstScrollableLayer(root_layer); |
| 799 Layer* page_scale_layer = page_scale_layer_; | 799 Layer* page_scale_layer = page_scale_layer_.get(); |
| 800 if (!page_scale_layer && root_scroll) | 800 if (!page_scale_layer && root_scroll) |
| 801 page_scale_layer = root_scroll->parent(); | 801 page_scale_layer = root_scroll->parent(); |
| 802 | 802 |
| 803 if (hud_layer_) { | 803 if (hud_layer_.get()) { |
| 804 hud_layer_->PrepareForCalculateDrawProperties( | 804 hud_layer_->PrepareForCalculateDrawProperties( |
| 805 device_viewport_size(), device_scale_factor_); | 805 device_viewport_size(), device_scale_factor_); |
| 806 } | 806 } |
| 807 | 807 |
| 808 TRACE_EVENT0("cc", "LayerTreeHost::UpdateLayers::CalcDrawProps"); | 808 TRACE_EVENT0("cc", "LayerTreeHost::UpdateLayers::CalcDrawProps"); |
| 809 bool can_render_to_separate_surface = true; | 809 bool can_render_to_separate_surface = true; |
| 810 // TODO(vmpstr): Passing 0 as the current render surface layer list id means | 810 // TODO(vmpstr): Passing 0 as the current render surface layer list id means |
| 811 // that we won't be able to detect if a layer is part of |update_list|. | 811 // that we won't be able to detect if a layer is part of |update_list|. |
| 812 // Change this if this information is required. | 812 // Change this if this information is required. |
| 813 int render_surface_layer_list_id = 0; | 813 int render_surface_layer_list_id = 0; |
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1072 } | 1072 } |
| 1073 | 1073 |
| 1074 if (!inner_viewport_scroll_delta.IsZero() || | 1074 if (!inner_viewport_scroll_delta.IsZero() || |
| 1075 !outer_viewport_scroll_delta.IsZero() || info->page_scale_delta != 1.f) { | 1075 !outer_viewport_scroll_delta.IsZero() || info->page_scale_delta != 1.f) { |
| 1076 // SetScrollOffsetFromImplSide above could have destroyed the tree, | 1076 // SetScrollOffsetFromImplSide above could have destroyed the tree, |
| 1077 // so re-get this layer before doing anything to it. | 1077 // so re-get this layer before doing anything to it. |
| 1078 | 1078 |
| 1079 // Preemptively apply the scroll offset and scale delta here before sending | 1079 // Preemptively apply the scroll offset and scale delta here before sending |
| 1080 // it to the client. If the client comes back and sets it to the same | 1080 // it to the client. If the client comes back and sets it to the same |
| 1081 // value, then the layer can early out without needing a full commit. | 1081 // value, then the layer can early out without needing a full commit. |
| 1082 DCHECK(inner_viewport_scroll_layer_); // We should always have this. | 1082 DCHECK(inner_viewport_scroll_layer_.get()); // We should always have this. |
| 1083 | 1083 |
| 1084 inner_viewport_scroll_layer_->SetScrollOffsetFromImplSide( | 1084 inner_viewport_scroll_layer_->SetScrollOffsetFromImplSide( |
| 1085 inner_viewport_scroll_layer_->scroll_offset() + | 1085 inner_viewport_scroll_layer_->scroll_offset() + |
| 1086 inner_viewport_scroll_delta); | 1086 inner_viewport_scroll_delta); |
| 1087 if (outer_viewport_scroll_layer_) { | 1087 if (outer_viewport_scroll_layer_.get()) { |
| 1088 outer_viewport_scroll_layer_->SetScrollOffsetFromImplSide( | 1088 outer_viewport_scroll_layer_->SetScrollOffsetFromImplSide( |
| 1089 outer_viewport_scroll_layer_->scroll_offset() + | 1089 outer_viewport_scroll_layer_->scroll_offset() + |
| 1090 outer_viewport_scroll_delta); | 1090 outer_viewport_scroll_delta); |
| 1091 } | 1091 } |
| 1092 ApplyPageScaleDeltaFromImplSide(info->page_scale_delta); | 1092 ApplyPageScaleDeltaFromImplSide(info->page_scale_delta); |
| 1093 | 1093 |
| 1094 client_->ApplyScrollAndScale( | 1094 client_->ApplyScrollAndScale( |
| 1095 inner_viewport_scroll_delta + outer_viewport_scroll_delta, | 1095 inner_viewport_scroll_delta + outer_viewport_scroll_delta, |
| 1096 info->page_scale_delta); | 1096 info->page_scale_delta); |
| 1097 } | 1097 } |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1301 swap_promise_list_.push_back(swap_promise.Pass()); | 1301 swap_promise_list_.push_back(swap_promise.Pass()); |
| 1302 } | 1302 } |
| 1303 | 1303 |
| 1304 void LayerTreeHost::BreakSwapPromises(SwapPromise::DidNotSwapReason reason) { | 1304 void LayerTreeHost::BreakSwapPromises(SwapPromise::DidNotSwapReason reason) { |
| 1305 for (size_t i = 0; i < swap_promise_list_.size(); i++) | 1305 for (size_t i = 0; i < swap_promise_list_.size(); i++) |
| 1306 swap_promise_list_[i]->DidNotSwap(reason); | 1306 swap_promise_list_[i]->DidNotSwap(reason); |
| 1307 swap_promise_list_.clear(); | 1307 swap_promise_list_.clear(); |
| 1308 } | 1308 } |
| 1309 | 1309 |
| 1310 } // namespace cc | 1310 } // namespace cc |
| OLD | NEW |