Chromium Code Reviews| 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(); |
| }); |