Index: cc/trees/layer_tree_impl.cc |
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc |
index 4951dd55fee114c11752da3916eac81c87f8fe94..4b2e8f2e7082c4f1d3b04cef8fe28d83260974c2 100644 |
--- a/cc/trees/layer_tree_impl.cc |
+++ b/cc/trees/layer_tree_impl.cc |
@@ -548,6 +548,11 @@ void LayerTreeImpl::AddToTransformAnimationsMap(int id, |
transform_animations_map_[id] = transform; |
} |
+void LayerTreeImpl::AddToFilterAnimationsMap(int id, |
+ const FilterOperations& filters) { |
+ filter_animations_map_[id] = filters; |
+} |
+ |
LayerImpl* LayerTreeImpl::InnerViewportContainerLayer() const { |
return InnerViewportScrollLayer() |
? InnerViewportScrollLayer()->scroll_clip_layer() |
@@ -655,6 +660,20 @@ void LayerTreeImpl::UpdatePropertyTreeScrollingAndAnimationFromMainThread() { |
for (auto id : layer_ids_to_remove) |
transform_animations_map_.erase(id); |
+ for (auto& layer_id_to_filters : filter_animations_map_) { |
+ const int id = layer_id_to_filters.first; |
+ if (property_trees_.IsInIdToIndexMap(PropertyTrees::TreeType::EFFECT, id)) { |
+ EffectNode* node = property_trees_.effect_tree.Node( |
+ property_trees_.effect_id_to_index_map[id]); |
+ if (!node->is_currently_animating_filter || |
+ node->filters == layer_id_to_filters.second) |
jaydasika
2016/07/20 20:53:06
Only elements that satisfy this if condition shoul
ajuma
2016/07/21 16:42:18
Done.
|
+ continue; |
+ node->filters = layer_id_to_filters.second; |
+ property_trees_.effect_tree.set_needs_update(true); |
+ } |
+ } |
+ |
+ filter_animations_map_.clear(); |
LayerTreeHostCommon::CallFunctionForEveryLayer(this, [](LayerImpl* layer) { |
layer->UpdatePropertyTreeForScrollingAndAnimationIfNeeded(); |
}); |