Chromium Code Reviews| Index: cc/trees/layer_tree_host_impl.cc |
| diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
| index ac4fd718574ea556dce7f456e7e726f38106bdec..67621146d7a271ecce9fc86be83b85fb2a749cde 100644 |
| --- a/cc/trees/layer_tree_host_impl.cc |
| +++ b/cc/trees/layer_tree_host_impl.cc |
| @@ -73,12 +73,14 @@ |
| #include "cc/tiles/software_image_decode_cache.h" |
| #include "cc/trees/damage_tracker.h" |
| #include "cc/trees/draw_property_utils.h" |
| +#include "cc/trees/effect_node.h" |
| #include "cc/trees/latency_info_swap_promise_monitor.h" |
| #include "cc/trees/layer_tree_host_common.h" |
| #include "cc/trees/layer_tree_impl.h" |
| #include "cc/trees/mutator_host.h" |
| #include "cc/trees/scroll_node.h" |
| #include "cc/trees/single_thread_proxy.h" |
| +#include "cc/trees/transform_node.h" |
| #include "cc/trees/tree_synchronizer.h" |
| #include "gpu/GLES2/gl2extchromium.h" |
| #include "gpu/command_buffer/client/context_support.h" |
| @@ -4120,9 +4122,67 @@ void LayerTreeHostImpl::ElementIsAnimatingChanged( |
| list_type == ElementListType::ACTIVE ? active_tree() : pending_tree(); |
| if (!tree) |
| return; |
| - LayerImpl* layer = tree->LayerByElementId(element_id); |
| - if (layer) |
| - layer->OnIsAnimatingChanged(mask, state); |
| + PropertyTrees* property_trees = tree->property_trees(); |
| + |
| + for (int property = TargetProperty::FIRST_TARGET_PROPERTY; |
|
wkorman
2017/03/20 21:59:57
Much of this is near identical to the same in laye
weiliangc
2017/03/21 15:18:52
We could create template function in utils class t
wkorman
2017/03/21 19:44:23
Either ok IMO, could add a comment here and in oth
ajuma
2017/03/21 19:53:28
Perhaps draw_property_utils or property_tree might
|
| + property <= TargetProperty::LAST_TARGET_PROPERTY; ++property) { |
| + if (!mask.currently_running[property] && |
| + !mask.potentially_animating[property]) |
| + continue; |
| + |
| + switch (property) { |
| + case TargetProperty::TRANSFORM: |
| + if (TransformNode* transform_node = |
| + property_trees->transform_tree.FindNodeFromElementId( |
| + element_id)) { |
| + if (mask.currently_running[property]) |
| + transform_node->is_currently_animating = |
| + state.currently_running[property]; |
| + if (mask.potentially_animating[property]) { |
| + transform_node->has_potential_animation = |
| + state.potentially_animating[property]; |
| + transform_node->has_only_translation_animations = |
| + mutator_host()->HasOnlyTranslationTransforms(element_id, |
| + list_type); |
| + property_trees->transform_tree.set_needs_update(true); |
| + tree->set_needs_update_draw_properties(); |
| + // TODO(crbug.com/702777): |
| + // was_ever_ready_since_last_transform_animation should not live on |
| + // layers. |
| + if (LayerImpl* layer = tree->LayerByElementId(element_id)) { |
| + layer->set_was_ever_ready_since_last_transform_animation(false); |
| + } |
| + } |
| + } |
| + break; |
| + case TargetProperty::OPACITY: |
| + if (EffectNode* effect_node = |
| + property_trees->effect_tree.FindNodeFromElementId(element_id)) { |
| + if (mask.currently_running[property]) |
| + effect_node->is_currently_animating_opacity = |
| + state.currently_running[property]; |
| + if (mask.potentially_animating[property]) { |
| + effect_node->has_potential_opacity_animation = |
| + state.potentially_animating[property]; |
| + property_trees->effect_tree.set_needs_update(true); |
| + } |
| + } |
| + break; |
| + case TargetProperty::FILTER: |
| + if (EffectNode* effect_node = |
| + property_trees->effect_tree.FindNodeFromElementId(element_id)) { |
| + if (mask.currently_running[property]) |
| + effect_node->is_currently_animating_filter = |
| + state.currently_running[property]; |
| + if (mask.potentially_animating[property]) |
| + effect_node->has_potential_filter_animation = |
| + state.potentially_animating[property]; |
|
wkorman
2017/03/20 21:59:57
Same comment as in layer_tree_host.cc, no set_need
weiliangc
2017/03/21 15:18:52
It is because for opacity animation and transform
wkorman
2017/03/21 19:44:23
Yes, I think worth adding a comment since I wonder
|
| + } |
| + break; |
| + default: |
| + break; |
| + } |
| + } |
| } |
| void LayerTreeHostImpl::ScrollOffsetAnimationFinished() { |