| 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 <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <algorithm> | 10 #include <algorithm> |
| 11 #include <stack> | 11 #include <stack> |
| 12 #include <string> | 12 #include <string> |
| 13 | 13 |
| 14 #include "base/atomic_sequence_num.h" | 14 #include "base/atomic_sequence_num.h" |
| 15 #include "base/auto_reset.h" | 15 #include "base/auto_reset.h" |
| 16 #include "base/bind.h" | 16 #include "base/bind.h" |
| 17 #include "base/command_line.h" | 17 #include "base/command_line.h" |
| 18 #include "base/location.h" | 18 #include "base/location.h" |
| 19 #include "base/metrics/histogram.h" | 19 #include "base/metrics/histogram.h" |
| 20 #include "base/single_thread_task_runner.h" | 20 #include "base/single_thread_task_runner.h" |
| 21 #include "base/stl_util.h" | 21 #include "base/stl_util.h" |
| 22 #include "base/strings/string_number_conversions.h" | 22 #include "base/strings/string_number_conversions.h" |
| 23 #include "base/thread_task_runner_handle.h" | 23 #include "base/thread_task_runner_handle.h" |
| 24 #include "base/trace_event/trace_event.h" | 24 #include "base/trace_event/trace_event.h" |
| 25 #include "base/trace_event/trace_event_argument.h" | 25 #include "base/trace_event/trace_event_argument.h" |
| 26 #include "cc/animation/animation_events.h" |
| 26 #include "cc/animation/animation_host.h" | 27 #include "cc/animation/animation_host.h" |
| 27 #include "cc/animation/animation_registrar.h" | 28 #include "cc/animation/animation_registrar.h" |
| 28 #include "cc/animation/layer_animation_controller.h" | 29 #include "cc/animation/layer_animation_controller.h" |
| 29 #include "cc/base/math_util.h" | 30 #include "cc/base/math_util.h" |
| 30 #include "cc/debug/devtools_instrumentation.h" | 31 #include "cc/debug/devtools_instrumentation.h" |
| 31 #include "cc/debug/frame_viewer_instrumentation.h" | 32 #include "cc/debug/frame_viewer_instrumentation.h" |
| 32 #include "cc/debug/rendering_stats_instrumentation.h" | 33 #include "cc/debug/rendering_stats_instrumentation.h" |
| 33 #include "cc/input/layer_selection_bound.h" | 34 #include "cc/input/layer_selection_bound.h" |
| 34 #include "cc/input/page_scale_animation.h" | 35 #include "cc/input/page_scale_animation.h" |
| 35 #include "cc/layers/heads_up_display_layer.h" | 36 #include "cc/layers/heads_up_display_layer.h" |
| (...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 545 | 546 |
| 546 void LayerTreeHost::SetNextCommitWaitsForActivation() { | 547 void LayerTreeHost::SetNextCommitWaitsForActivation() { |
| 547 proxy_->SetNextCommitWaitsForActivation(); | 548 proxy_->SetNextCommitWaitsForActivation(); |
| 548 } | 549 } |
| 549 | 550 |
| 550 void LayerTreeHost::SetNextCommitForcesRedraw() { | 551 void LayerTreeHost::SetNextCommitForcesRedraw() { |
| 551 next_commit_forces_redraw_ = true; | 552 next_commit_forces_redraw_ = true; |
| 552 proxy_->SetNeedsUpdateLayers(); | 553 proxy_->SetNeedsUpdateLayers(); |
| 553 } | 554 } |
| 554 | 555 |
| 555 void LayerTreeHost::SetAnimationEvents( | 556 void LayerTreeHost::SetAnimationEvents(scoped_ptr<AnimationEvents> events) { |
| 556 scoped_ptr<AnimationEventsVector> events) { | |
| 557 DCHECK(task_runner_provider_->IsMainThread()); | 557 DCHECK(task_runner_provider_->IsMainThread()); |
| 558 if (animation_host_) | 558 if (animation_host_) |
| 559 animation_host_->SetAnimationEvents(std::move(events)); | 559 animation_host_->SetAnimationEvents(std::move(events)); |
| 560 else | 560 else |
| 561 animation_registrar_->SetAnimationEvents(std::move(events)); | 561 animation_registrar_->SetAnimationEvents(std::move(events)); |
| 562 } | 562 } |
| 563 | 563 |
| 564 void LayerTreeHost::SetRootLayer(scoped_refptr<Layer> root_layer) { | 564 void LayerTreeHost::SetRootLayer(scoped_refptr<Layer> root_layer) { |
| 565 if (root_layer_.get() == root_layer.get()) | 565 if (root_layer_.get() == root_layer.get()) |
| 566 return; | 566 return; |
| (...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 914 bool animate) { | 914 bool animate) { |
| 915 // Top controls are only used in threaded mode. | 915 // Top controls are only used in threaded mode. |
| 916 DCHECK(IsThreaded()); | 916 DCHECK(IsThreaded()); |
| 917 proxy_->UpdateTopControlsState(constraints, current, animate); | 917 proxy_->UpdateTopControlsState(constraints, current, animate); |
| 918 } | 918 } |
| 919 | 919 |
| 920 void LayerTreeHost::AnimateLayers(base::TimeTicks monotonic_time) { | 920 void LayerTreeHost::AnimateLayers(base::TimeTicks monotonic_time) { |
| 921 if (!settings_.accelerated_animation_enabled) | 921 if (!settings_.accelerated_animation_enabled) |
| 922 return; | 922 return; |
| 923 | 923 |
| 924 AnimationEventsVector events; | 924 scoped_ptr<AnimationEvents> events; |
| 925 if (animation_host_) { | 925 if (animation_host_) { |
| 926 events = animation_host_->CreateEvents(); |
| 926 if (animation_host_->AnimateLayers(monotonic_time)) | 927 if (animation_host_->AnimateLayers(monotonic_time)) |
| 927 animation_host_->UpdateAnimationState(true, &events); | 928 animation_host_->UpdateAnimationState(true, events.get()); |
| 928 } else { | 929 } else { |
| 930 events = animation_registrar_->CreateEvents(); |
| 929 if (animation_registrar_->AnimateLayers(monotonic_time)) | 931 if (animation_registrar_->AnimateLayers(monotonic_time)) |
| 930 animation_registrar_->UpdateAnimationState(true, &events); | 932 animation_registrar_->UpdateAnimationState(true, events.get()); |
| 931 } | 933 } |
| 932 | 934 |
| 933 if (!events.empty()) | 935 if (!events->events_.empty()) |
| 934 property_trees_.needs_rebuild = true; | 936 property_trees_.needs_rebuild = true; |
| 935 } | 937 } |
| 936 | 938 |
| 937 UIResourceId LayerTreeHost::CreateUIResource(UIResourceClient* client) { | 939 UIResourceId LayerTreeHost::CreateUIResource(UIResourceClient* client) { |
| 938 DCHECK(client); | 940 DCHECK(client); |
| 939 | 941 |
| 940 UIResourceId next_id = next_ui_resource_id_++; | 942 UIResourceId next_id = next_ui_resource_id_++; |
| 941 DCHECK(ui_resource_client_map_.find(next_id) == | 943 DCHECK(ui_resource_client_map_.find(next_id) == |
| 942 ui_resource_client_map_.end()); | 944 ui_resource_client_map_.end()); |
| 943 | 945 |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1270 return compositor_mode_ == CompositorMode::SingleThreaded; | 1272 return compositor_mode_ == CompositorMode::SingleThreaded; |
| 1271 } | 1273 } |
| 1272 | 1274 |
| 1273 bool LayerTreeHost::IsThreaded() const { | 1275 bool LayerTreeHost::IsThreaded() const { |
| 1274 DCHECK(compositor_mode_ != CompositorMode::Threaded || | 1276 DCHECK(compositor_mode_ != CompositorMode::Threaded || |
| 1275 task_runner_provider_->HasImplThread()); | 1277 task_runner_provider_->HasImplThread()); |
| 1276 return compositor_mode_ == CompositorMode::Threaded; | 1278 return compositor_mode_ == CompositorMode::Threaded; |
| 1277 } | 1279 } |
| 1278 | 1280 |
| 1279 } // namespace cc | 1281 } // namespace cc |
| OLD | NEW |