Chromium Code Reviews| Index: cc/layers/layer_impl.cc |
| diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
| index 3c2d6b4a991f4611dca6bf22e5b5b60cd3b505cf..8a305a9fdc98eb7474fa08f6524466eb00a69278 100644 |
| --- a/cc/layers/layer_impl.cc |
| +++ b/cc/layers/layer_impl.cc |
| @@ -706,7 +706,9 @@ base::DictionaryValue* LayerImpl::LayerTreeAsJson() const { |
| } |
| bool LayerImpl::LayerPropertyChanged() const { |
| - if (layer_property_changed_) |
| + if (layer_property_changed_ || |
| + (layer_tree_impl()->property_trees() && |
| + layer_tree_impl()->property_trees()->full_tree_damaged)) |
| return true; |
| if (transform_tree_index() == -1) |
| return false; |
| @@ -720,7 +722,7 @@ bool LayerImpl::LayerPropertyChanged() const { |
| EffectNode* effect_node = |
| layer_tree_impl()->property_trees()->effect_tree.Node( |
| effect_tree_index()); |
| - if (effect_node && effect_node->data.opacity_changed) |
| + if (effect_node && effect_node->data.effect_changed) |
| return true; |
| return false; |
| } |
| @@ -731,27 +733,6 @@ void LayerImpl::NoteLayerPropertyChanged() { |
| SetNeedsPushProperties(); |
| } |
| -void LayerImpl::NoteLayerPropertyChangedForSubtree() { |
| - layer_property_changed_ = true; |
| - layer_tree_impl()->set_needs_update_draw_properties(); |
| - for (size_t i = 0; i < children_.size(); ++i) |
| - children_[i]->NoteLayerPropertyChangedForDescendantsInternal(); |
| - SetNeedsPushProperties(); |
| -} |
| - |
| -void LayerImpl::NoteLayerPropertyChangedForDescendantsInternal() { |
| - layer_property_changed_ = true; |
| - for (size_t i = 0; i < children_.size(); ++i) |
| - children_[i]->NoteLayerPropertyChangedForDescendantsInternal(); |
| -} |
| - |
| -void LayerImpl::NoteLayerPropertyChangedForDescendants() { |
| - layer_tree_impl()->set_needs_update_draw_properties(); |
| - for (size_t i = 0; i < children_.size(); ++i) |
| - children_[i]->NoteLayerPropertyChangedForDescendantsInternal(); |
| - SetNeedsPushProperties(); |
| -} |
| - |
| void LayerImpl::PushLayerPropertyChangedForSubtreeInternal() { |
| if (LayerPropertyChanged()) |
| NoteLayerPropertyChanged(); |
| @@ -768,7 +749,7 @@ void LayerImpl::PushLayerPropertyChangedForSubtree() { |
| for (int i = 1; i < static_cast<int>(effect_tree.size()); ++i) { |
| EffectNode* node = effect_tree.Node(i); |
| EffectNode* parent_node = effect_tree.parent(node); |
| - effect_tree.UpdateOpacityChanged(node, parent_node); |
| + effect_tree.UpdateEffectChanged(node, parent_node); |
| } |
| for (int i = 1; i < static_cast<int>(transform_tree.size()); ++i) { |
| TransformNode* node = transform_tree.Node(i); |
| @@ -915,7 +896,7 @@ void LayerImpl::UpdatePropertyTreeOpacity() { |
| if (node->owner_id != id() || node->data.opacity == effective_opacity) |
| return; |
| node->data.opacity = effective_opacity; |
| - node->data.opacity_changed = true; |
| + node->data.effect_changed = true; |
| layer_tree_impl()->property_trees()->changed = true; |
| effect_tree.set_needs_update(true); |
| } |
| @@ -940,7 +921,17 @@ gfx::ScrollOffset LayerImpl::ScrollOffsetForAnimation() const { |
| } |
| void LayerImpl::OnFilterAnimated(const FilterOperations& filters) { |
| - SetFilters(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_EQ(node->owner_id, id()); |
| + node->data.effect_changed = true; |
| + layer_tree_impl()->property_trees()->changed = true; |
| + effect_tree.set_needs_update(true); |
| + } |
| } |
| void LayerImpl::OnOpacityAnimated(float opacity) { |
| @@ -1007,8 +998,7 @@ void LayerImpl::SetBounds(const gfx::Size& bounds) { |
| layer_tree_impl()->DidUpdateScrollState(id()); |
| - if (!masks_to_bounds()) |
| - NoteLayerPropertyChanged(); |
| + NoteLayerPropertyChanged(); |
|
jaydasika
2016/03/02 16:27:08
Change from a previous CL.
|
| } |
| void LayerImpl::SetBoundsDelta(const gfx::Vector2dF& bounds_delta) { |
| @@ -1037,8 +1027,8 @@ void LayerImpl::SetBoundsDelta(const gfx::Vector2dF& bounds_delta) { |
| gfx::PointF() + offset_to_transform_parent(), gfx::SizeF(bounds())); |
| property_trees->clip_tree.set_needs_update(true); |
| } |
| - |
| - NoteLayerPropertyChangedForSubtree(); |
| + property_trees->full_tree_damaged = true; |
| + layer_tree_impl()->set_needs_update_draw_properties(); |
| } else { |
| NoteLayerPropertyChanged(); |
| } |
| @@ -1143,7 +1133,6 @@ void LayerImpl::SetFilters(const FilterOperations& filters) { |
| return; |
| filters_ = filters; |
| - NoteLayerPropertyChangedForSubtree(); |
| } |
| bool LayerImpl::FilterIsAnimating() const { |
| @@ -1549,9 +1538,17 @@ void LayerImpl::DidUpdateScrollOffset() { |
| DCHECK(scroll_offset_); |
| layer_tree_impl()->DidUpdateScrollState(id()); |
| - NoteLayerPropertyChangedForSubtree(); |
| - UpdatePropertyTreeScrollOffset(); |
| + if (transform_tree_index_ != -1) { |
| + UpdatePropertyTreeScrollOffset(); |
| + TransformTree& transform_tree = |
| + layer_tree_impl()->property_trees()->transform_tree; |
| + TransformNode* node = transform_tree.Node(transform_tree_index_); |
| + node->data.transform_changed = true; |
| + layer_tree_impl()->property_trees()->changed = true; |
| + layer_tree_impl()->set_needs_update_draw_properties(); |
| + SetNeedsPushProperties(); |
| + } |
| // Inform the pending twin that a property changed. |
| if (layer_tree_impl()->IsActiveTree()) { |