Index: cc/layers/layer_impl.cc |
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
index 4dd916142f238f90511407e0cd3dada6c0e2c9df..35d03e225bffe8783a3a75d8b2ca0c85befe775d 100644 |
--- a/cc/layers/layer_impl.cc |
+++ b/cc/layers/layer_impl.cc |
@@ -485,7 +485,7 @@ int LayerImpl::num_copy_requests_in_target_subtree() { |
void LayerImpl::UpdatePropertyTreeTransformIsAnimated(bool is_animated) { |
if (TransformNode* node = |
- GetTransformTree().FindNodeFromOwningLayerId(id())) { |
+ GetTransformTree().UpdateNodeFromOwningLayerId(id())) { |
// A LayerImpl's own current state is insufficient for determining whether |
// it owns a TransformNode, since this depends on the state of the |
// corresponding Layer at the time of the last commit. For example, if |
@@ -527,14 +527,16 @@ void LayerImpl::OnIsAnimatingChanged(const PropertyAnimationState& mask, |
const PropertyAnimationState& state) { |
DCHECK(layer_tree_impl_); |
- TransformNode* transform_node = |
- GetTransformTree().FindNodeFromOwningLayerId(id()); |
- EffectNode* effect_node = GetEffectTree().FindNodeFromOwningLayerId(id()); |
for (int property = TargetProperty::FIRST_TARGET_PROPERTY; |
property <= TargetProperty::LAST_TARGET_PROPERTY; ++property) { |
+ if (!mask.currently_running[property] && |
+ !mask.potentially_animating[property]) |
+ continue; |
+ |
switch (property) { |
case TargetProperty::TRANSFORM: |
- if (transform_node) { |
+ if (TransformNode* transform_node = |
+ GetTransformTree().UpdateNodeFromOwningLayerId(id())) { |
if (mask.currently_running[property]) |
transform_node->is_currently_animating = |
state.currently_running[property]; |
@@ -546,7 +548,8 @@ void LayerImpl::OnIsAnimatingChanged(const PropertyAnimationState& mask, |
} |
break; |
case TargetProperty::OPACITY: |
- if (effect_node) { |
+ if (EffectNode* effect_node = |
+ GetEffectTree().UpdateNodeFromOwningLayerId(id())) { |
if (mask.currently_running[property]) |
effect_node->is_currently_animating_opacity = |
state.currently_running[property]; |
@@ -558,7 +561,8 @@ void LayerImpl::OnIsAnimatingChanged(const PropertyAnimationState& mask, |
} |
break; |
case TargetProperty::FILTER: |
- if (effect_node) { |
+ if (EffectNode* effect_node = |
+ GetEffectTree().UpdateNodeFromOwningLayerId(id())) { |
if (mask.currently_running[property]) |
effect_node->is_currently_animating_filter = |
state.currently_running[property]; |
@@ -618,9 +622,9 @@ void LayerImpl::SetBoundsDelta(const gfx::Vector2dF& bounds_delta) { |
if (masks_to_bounds()) { |
// If layer is clipping, then update the clip node using the new bounds. |
- ClipNode* clip_node = property_trees->clip_tree.Node(clip_tree_index()); |
- if (clip_node) { |
- DCHECK_EQ(clip_node, GetClipTree().FindNodeFromOwningLayerId(id())); |
+ if (ClipNode* clip_node = |
+ property_trees->clip_tree.UpdateNodeFromOwningLayerId(id())) { |
+ DCHECK_EQ(clip_node->id, clip_tree_index()); |
clip_node->clip = gfx::RectF(gfx::PointF() + offset_to_transform_parent(), |
gfx::SizeF(bounds())); |
property_trees->clip_tree.set_needs_update(true); |
@@ -684,7 +688,7 @@ void LayerImpl::SetContentsOpaque(bool opaque) { |
} |
float LayerImpl::Opacity() const { |
- if (EffectNode* node = GetEffectTree().FindNodeFromOwningLayerId(id())) |
+ if (const EffectNode* node = GetEffectTree().FindNodeFromOwningLayerId(id())) |
return node->opacity; |
else |
return 1.f; |