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 |