Chromium Code Reviews| Index: cc/trees/layer_tree_host.cc |
| diff --git a/cc/trees/layer_tree_host.cc b/cc/trees/layer_tree_host.cc |
| index f4780789394c447a1b3a56cfb5925ef325dec6a1..f4e4309d60f05003db55a05d0342498010c0081b 100644 |
| --- a/cc/trees/layer_tree_host.cc |
| +++ b/cc/trees/layer_tree_host.cc |
| @@ -18,6 +18,7 @@ |
| #include "base/trace_event/trace_event.h" |
| #include "base/trace_event/trace_event_argument.h" |
| #include "cc/animation/animation_registrar.h" |
| +#include "cc/animation/animation_timeline.h" |
| #include "cc/animation/layer_animation_controller.h" |
| #include "cc/base/math_util.h" |
| #include "cc/debug/devtools_instrumentation.h" |
| @@ -296,6 +297,9 @@ void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) { |
| sync_tree->set_source_frame_number(source_frame_number()); |
| if (needs_full_tree_sync_) { |
| + host_impl->SetAnimationTimeline( |
| + animation_timeline_ ? AnimationTimeline::Create() : nullptr); |
| + |
| sync_tree->SetRootLayer(TreeSynchronizer::SynchronizeTrees( |
| root_layer(), sync_tree->DetachLayerTree(), sync_tree)); |
| } |
| @@ -369,6 +373,11 @@ void LayerTreeHost::FinishCommitOnImplThread(LayerTreeHostImpl* host_impl) { |
| { |
| TRACE_EVENT0("cc", "LayerTreeHost::PushProperties"); |
| TreeSynchronizer::PushProperties(root_layer(), sync_tree->root_layer()); |
| + |
| + if (animation_timeline_) { |
| + DCHECK(host_impl->animation_timeline()); |
| + animation_timeline_->PushPropertiesTo(host_impl->animation_timeline()); |
| + } |
| } |
| micro_benchmark_controller_.ScheduleImplBenchmarks(host_impl); |
| @@ -579,6 +588,18 @@ void LayerTreeHost::SetAnimationEvents( |
| } |
| } |
| +void LayerTreeHost::SetAnimationTimeline( |
| + scoped_refptr<AnimationTimeline> timeline) { |
| + if (animation_timeline_.get() == timeline.get()) |
| + return; |
| + |
| + if (animation_timeline_.get()) |
| + animation_timeline_->SetLayerTreeMutatorsClient(nullptr); |
| + animation_timeline_ = timeline; |
| + if (animation_timeline_.get()) |
| + animation_timeline_->SetLayerTreeMutatorsClient(this); |
| +} |
| + |
| void LayerTreeHost::SetRootLayer(scoped_refptr<Layer> root_layer) { |
| if (root_layer_.get() == root_layer.get()) |
| return; |
| @@ -1376,4 +1397,51 @@ void LayerTreeHost::SendBeginFramesToChildren( |
| client_->SendBeginFramesToChildren(args); |
| } |
| +Layer* LayerTreeHost::LayerById(int id) const { |
| + LayerIdMap::const_iterator iter = layer_id_map_.find(id); |
| + return iter != layer_id_map_.end() ? iter->second : NULL; |
| +} |
| + |
| +void LayerTreeHost::RegisterLayer(Layer* layer) { |
| + DCHECK(!LayerById(layer->id())); |
| + layer_id_map_[layer->id()] = layer; |
| +} |
| + |
| +void LayerTreeHost::UnregisterLayer(Layer* layer) { |
| + DCHECK(LayerById(layer->id())); |
| + layer_id_map_.erase(layer->id()); |
| +} |
| + |
| +AnimationRegistrar* LayerTreeHost::GetAnimationRegistrar() const { |
| + return animation_registrar_.get(); |
| +} |
| + |
| +void LayerTreeHost::SetMutatorsNeedCommit() { |
| + SetNeedsCommit(); |
| +} |
| + |
| +void LayerTreeHost::SetLayerFilterMutated(int layer_id, |
| + bool active_tree, |
| + const FilterOperations& filters) { |
| + LayerAnimationValueObserver* layer = LayerById(layer_id); |
| + if (layer) |
|
ajuma
2015/02/23 16:36:44
In what situation would |layer| be null here? Shou
loyso (OOO)
2015/02/25 04:37:03
Active tree is a 'passive' view of pending tree. O
ajuma
2015/02/25 14:57:25
I'm not sure I follow. LayerTreeHost is the main-t
loyso (OOO)
2015/02/26 03:04:45
Oh, sorry. I was commenting with LayerTreeHostImpl
ajuma
2015/02/26 14:16:31
needs_synchronized_start_time means "use the compo
loyso (OOO)
2015/02/27 02:45:17
Thank you so much Ali for pointing out that import
|
| + layer->OnFilterAnimated(filters); |
| +} |
| + |
| +void LayerTreeHost::SetLayerOpacityMutated(int layer_id, |
| + bool active_tree, |
| + float opacity) { |
| + LayerAnimationValueObserver* layer = LayerById(layer_id); |
| + if (layer) |
| + layer->OnOpacityAnimated(opacity); |
| +} |
| + |
| +void LayerTreeHost::SetLayerTransformMutated(int layer_id, |
| + bool active_tree, |
| + const gfx::Transform& transform) { |
| + LayerAnimationValueObserver* layer = LayerById(layer_id); |
| + if (layer) |
| + layer->OnTransformAnimated(transform); |
| +} |
| + |
| } // namespace cc |