Index: cc/layers/layer_impl.cc |
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
index 15a494920474e404041001fc91fbb2139d4023fe..ac53860f007bef5b7daec8be0b7b2eaa334e9031 100644 |
--- a/cc/layers/layer_impl.cc |
+++ b/cc/layers/layer_impl.cc |
@@ -349,7 +349,6 @@ void LayerImpl::PushPropertiesTo(LayerImpl* layer) { |
layer->effect_tree_index_ = effect_tree_index_; |
layer->clip_tree_index_ = clip_tree_index_; |
layer->scroll_tree_index_ = scroll_tree_index_; |
- layer->filters_ = filters_; |
layer->sorting_context_id_ = sorting_context_id_; |
layer->has_will_change_transform_hint_ = has_will_change_transform_hint_; |
@@ -596,18 +595,19 @@ gfx::ScrollOffset LayerImpl::ScrollOffsetForAnimation() const { |
} |
void LayerImpl::OnFilterAnimated(const FilterOperations& filters) { |
- if (filters_ != filters) { |
- SetFilters(filters); |
- SetNeedsPushProperties(); |
- layer_tree_impl()->set_needs_update_draw_properties(); |
- EffectTree& effect_tree = layer_tree_impl()->property_trees()->effect_tree; |
- EffectNode* node = effect_tree.Node(effect_tree_index_); |
- DCHECK(layer_tree_impl()->property_trees()->IsInIdToIndexMap( |
- PropertyTrees::TreeType::EFFECT, id())); |
- node->effect_changed = true; |
- layer_tree_impl()->property_trees()->changed = true; |
- effect_tree.set_needs_update(true); |
- } |
+ layer_tree_impl()->AddToFilterAnimationsMap(id(), filters); |
+ PropertyTrees* property_trees = layer_tree_impl()->property_trees(); |
+ DCHECK( |
+ property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())); |
+ EffectNode* node = property_trees->effect_tree.Node(effect_tree_index()); |
+ if (node->filters == filters) |
+ return; |
+ node->filters = filters; |
+ node->effect_changed = true; |
+ property_trees->changed = true; |
+ property_trees->effect_tree.set_needs_update(true); |
+ SetNeedsPushProperties(); |
+ layer_tree_impl()->set_needs_update_draw_properties(); |
} |
void LayerImpl::OnOpacityAnimated(float opacity) { |
@@ -683,6 +683,29 @@ void LayerImpl::OnOpacityIsPotentiallyAnimatingChanged( |
property_trees->effect_tree.set_needs_update(true); |
} |
+void LayerImpl::OnFilterIsCurrentlyAnimatingChanged( |
+ bool is_currently_animating) { |
+ DCHECK(layer_tree_impl_); |
+ PropertyTrees* property_trees = layer_tree_impl()->property_trees(); |
+ if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) |
+ return; |
+ EffectNode* node = property_trees->effect_tree.Node( |
+ property_trees->effect_id_to_index_map[id()]); |
+ |
+ node->is_currently_animating_filter = is_currently_animating; |
+} |
+ |
+void LayerImpl::OnFilterIsPotentiallyAnimatingChanged( |
+ bool has_potential_animation) { |
+ DCHECK(layer_tree_impl_); |
+ PropertyTrees* property_trees = layer_tree_impl()->property_trees(); |
+ if (!property_trees->IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id())) |
+ return; |
+ EffectNode* node = property_trees->effect_tree.Node( |
+ property_trees->effect_id_to_index_map[id()]); |
+ node->has_potential_filter_animation = has_potential_animation; |
+} |
+ |
bool LayerImpl::IsActive() const { |
return layer_tree_impl_->IsActiveTree(); |
} |
@@ -776,10 +799,6 @@ SkColor LayerImpl::SafeOpaqueBackgroundColor() const { |
return color; |
} |
-void LayerImpl::SetFilters(const FilterOperations& filters) { |
- filters_ = filters; |
-} |
- |
bool LayerImpl::FilterIsAnimating() const { |
return GetAnimationHost()->IsAnimatingFilterProperty( |
element_id(), GetElementTypeForAnimation()); |