| 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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 126 visible_(true), | 126 visible_(true), |
| 127 page_scale_factor_(1.f), | 127 page_scale_factor_(1.f), |
| 128 min_page_scale_factor_(1.f), | 128 min_page_scale_factor_(1.f), |
| 129 max_page_scale_factor_(1.f), | 129 max_page_scale_factor_(1.f), |
| 130 trigger_idle_updates_(true), | 130 trigger_idle_updates_(true), |
| 131 background_color_(SK_ColorWHITE), | 131 background_color_(SK_ColorWHITE), |
| 132 has_transparent_background_(false), | 132 has_transparent_background_(false), |
| 133 partial_texture_update_requests_(0), | 133 partial_texture_update_requests_(0), |
| 134 in_paint_layer_contents_(false), | 134 in_paint_layer_contents_(false), |
| 135 total_frames_used_for_lcd_text_metrics_(0), | 135 total_frames_used_for_lcd_text_metrics_(0), |
| 136 tree_id_(s_next_tree_id++) { | 136 tree_id_(s_next_tree_id++), |
| 137 next_commit_forces_redraw_(false) { |
| 137 if (settings_.accelerated_animation_enabled) | 138 if (settings_.accelerated_animation_enabled) |
| 138 animation_registrar_ = AnimationRegistrar::Create(); | 139 animation_registrar_ = AnimationRegistrar::Create(); |
| 139 s_num_layer_tree_instances++; | 140 s_num_layer_tree_instances++; |
| 140 rendering_stats_instrumentation_->set_record_rendering_stats( | 141 rendering_stats_instrumentation_->set_record_rendering_stats( |
| 141 debug_state_.RecordRenderingStats()); | 142 debug_state_.RecordRenderingStats()); |
| 142 } | 143 } |
| 143 | 144 |
| 144 bool LayerTreeHost::Initialize( | 145 bool LayerTreeHost::Initialize( |
| 145 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { | 146 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner) { |
| 146 if (impl_task_runner.get()) | 147 if (impl_task_runner.get()) |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 316 // In impl-side painting, synchronize to the pending tree so that it has | 317 // In impl-side painting, synchronize to the pending tree so that it has |
| 317 // time to raster before being displayed. If no pending tree is needed, | 318 // time to raster before being displayed. If no pending tree is needed, |
| 318 // synchronization can happen directly to the active tree and | 319 // synchronization can happen directly to the active tree and |
| 319 // unlinked contents resources can be reclaimed immediately. | 320 // unlinked contents resources can be reclaimed immediately. |
| 320 LayerTreeImpl* sync_tree; | 321 LayerTreeImpl* sync_tree; |
| 321 if (settings_.impl_side_painting) { | 322 if (settings_.impl_side_painting) { |
| 322 // Commits should not occur while there is already a pending tree. | 323 // Commits should not occur while there is already a pending tree. |
| 323 DCHECK(!host_impl->pending_tree()); | 324 DCHECK(!host_impl->pending_tree()); |
| 324 host_impl->CreatePendingTree(); | 325 host_impl->CreatePendingTree(); |
| 325 sync_tree = host_impl->pending_tree(); | 326 sync_tree = host_impl->pending_tree(); |
| 327 if (next_commit_forces_redraw_) |
| 328 sync_tree->ForceRedrawNextActivation(); |
| 326 } else { | 329 } else { |
| 330 if (next_commit_forces_redraw_) |
| 331 host_impl->SetFullRootLayerDamage(); |
| 327 contents_texture_manager_->ReduceMemory(host_impl->resource_provider()); | 332 contents_texture_manager_->ReduceMemory(host_impl->resource_provider()); |
| 328 sync_tree = host_impl->active_tree(); | 333 sync_tree = host_impl->active_tree(); |
| 329 } | 334 } |
| 330 | 335 |
| 336 next_commit_forces_redraw_ = false; |
| 337 |
| 331 sync_tree->set_source_frame_number(source_frame_number()); | 338 sync_tree->set_source_frame_number(source_frame_number()); |
| 332 | 339 |
| 333 if (needs_full_tree_sync_) | 340 if (needs_full_tree_sync_) |
| 334 sync_tree->SetRootLayer(TreeSynchronizer::SynchronizeTrees( | 341 sync_tree->SetRootLayer(TreeSynchronizer::SynchronizeTrees( |
| 335 root_layer(), sync_tree->DetachLayerTree(), sync_tree)); | 342 root_layer(), sync_tree->DetachLayerTree(), sync_tree)); |
| 336 { | 343 { |
| 337 TRACE_EVENT0("cc", "LayerTreeHost::PushProperties"); | 344 TRACE_EVENT0("cc", "LayerTreeHost::PushProperties"); |
| 338 TreeSynchronizer::PushProperties(root_layer(), sync_tree->root_layer()); | 345 TreeSynchronizer::PushProperties(root_layer(), sync_tree->root_layer()); |
| 339 } | 346 } |
| 340 | 347 |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 558 } | 565 } |
| 559 | 566 |
| 560 bool LayerTreeHost::CommitRequested() const { | 567 bool LayerTreeHost::CommitRequested() const { |
| 561 return proxy_->CommitRequested(); | 568 return proxy_->CommitRequested(); |
| 562 } | 569 } |
| 563 | 570 |
| 564 void LayerTreeHost::SetNextCommitWaitsForActivation() { | 571 void LayerTreeHost::SetNextCommitWaitsForActivation() { |
| 565 proxy_->SetNextCommitWaitsForActivation(); | 572 proxy_->SetNextCommitWaitsForActivation(); |
| 566 } | 573 } |
| 567 | 574 |
| 575 void LayerTreeHost::SetNextCommitForcesRedraw() { |
| 576 next_commit_forces_redraw_ = true; |
| 577 } |
| 578 |
| 568 void LayerTreeHost::SetAnimationEvents(scoped_ptr<AnimationEventsVector> events, | 579 void LayerTreeHost::SetAnimationEvents(scoped_ptr<AnimationEventsVector> events, |
| 569 base::Time wall_clock_time) { | 580 base::Time wall_clock_time) { |
| 570 DCHECK(proxy_->IsMainThread()); | 581 DCHECK(proxy_->IsMainThread()); |
| 571 for (size_t event_index = 0; event_index < events->size(); ++event_index) { | 582 for (size_t event_index = 0; event_index < events->size(); ++event_index) { |
| 572 int event_layer_id = (*events)[event_index].layer_id; | 583 int event_layer_id = (*events)[event_index].layer_id; |
| 573 | 584 |
| 574 // Use the map of all controllers, not just active ones, since non-active | 585 // Use the map of all controllers, not just active ones, since non-active |
| 575 // controllers may still receive events for impl-only animations. | 586 // controllers may still receive events for impl-only animations. |
| 576 const AnimationRegistrar::AnimationControllerMap& animation_controllers = | 587 const AnimationRegistrar::AnimationControllerMap& animation_controllers = |
| 577 animation_registrar_->all_animation_controllers(); | 588 animation_registrar_->all_animation_controllers(); |
| (...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1260 outer_viewport_scroll_layer_ = outer_viewport_scroll_layer; | 1271 outer_viewport_scroll_layer_ = outer_viewport_scroll_layer; |
| 1261 } | 1272 } |
| 1262 | 1273 |
| 1263 bool LayerTreeHost::ScheduleMicroBenchmark( | 1274 bool LayerTreeHost::ScheduleMicroBenchmark( |
| 1264 const std::string& benchmark_name, | 1275 const std::string& benchmark_name, |
| 1265 const MicroBenchmark::DoneCallback& callback) { | 1276 const MicroBenchmark::DoneCallback& callback) { |
| 1266 return micro_benchmark_controller_.ScheduleRun(benchmark_name, callback); | 1277 return micro_benchmark_controller_.ScheduleRun(benchmark_name, callback); |
| 1267 } | 1278 } |
| 1268 | 1279 |
| 1269 } // namespace cc | 1280 } // namespace cc |
| OLD | NEW |