Chromium Code Reviews| Index: cc/layers/layer_impl.cc |
| diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
| index 804aa6627eea921af977513d71a33c0a9642b2ae..da10c499d9c89be8a7bd149e9a8e128ec926f57c 100644 |
| --- a/cc/layers/layer_impl.cc |
| +++ b/cc/layers/layer_impl.cc |
| @@ -706,6 +706,11 @@ void LayerImpl::PushPropertiesTo(LayerImpl* layer) { |
| // Reset any state that should be cleared for the next update. |
| stacking_order_changed_ = false; |
| layer_property_changed_ = false; |
| + if (TransformNode* transform_node = |
| + layer_tree_impl_->property_trees()->transform_tree.Node( |
| + transform_tree_index())) { |
| + transform_node->data.transform_changed = false; |
|
ajuma
2016/02/12 23:57:03
Same comment as in Layer::PushProperties.
jaydasika
2016/02/16 22:30:36
Done.
|
| + } |
| update_rect_ = gfx::Rect(); |
| needs_push_properties_ = false; |
| num_dependents_need_push_properties_ = 0; |
| @@ -778,6 +783,17 @@ void LayerImpl::SetStackingOrderChanged(bool stacking_order_changed) { |
| } |
| } |
| +bool LayerImpl::LayerPropertyChanged() const { |
| + if (layer_property_changed_) |
| + return true; |
| + TransformNode* node = |
| + layer_tree_impl()->property_trees()->transform_tree.Node( |
| + transform_tree_index()); |
| + if (node && node->data.transform_changed) |
| + return true; |
| + return false; |
| +} |
| + |
| void LayerImpl::NoteLayerPropertyChanged() { |
| layer_property_changed_ = true; |
| layer_tree_impl()->set_needs_update_draw_properties(); |
| @@ -820,6 +836,11 @@ const char* LayerImpl::LayerTypeAsString() const { |
| void LayerImpl::ResetAllChangeTrackingForSubtree() { |
| layer_property_changed_ = false; |
| + if (TransformNode* transform_node = |
| + layer_tree_impl_->property_trees()->transform_tree.Node( |
| + transform_tree_index())) { |
| + transform_node->data.transform_changed = false; |
|
ajuma
2016/02/12 23:57:03
An alternative to doing this layer-by-layer would
jaydasika
2016/02/16 22:30:36
Done.
|
| + } |
| update_rect_.SetRect(0, 0, 0, 0); |
| damage_rect_.SetRect(0, 0, 0, 0); |
| @@ -1015,9 +1036,7 @@ void LayerImpl::SetBounds(const gfx::Size& bounds) { |
| layer_tree_impl()->DidUpdateScrollState(id()); |
| - if (masks_to_bounds()) |
| - NoteLayerPropertyChangedForSubtree(); |
| - else |
| + if (!masks_to_bounds()) |
| NoteLayerPropertyChanged(); |
|
ajuma
2016/02/12 23:57:03
Is this still needed? LayerImpl::SetBounds should
jaydasika
2016/02/16 22:30:36
In Layer, we set SubtreePropertyChanged to true on
ajuma
2016/02/16 22:55:50
Ah, makes sense. Please add a comment about this (
jaydasika
2016/02/17 02:00:15
Forgot adding a comment here, will add it in the n
|
| } |
| @@ -1119,7 +1138,6 @@ void LayerImpl::SetTransformOrigin(const gfx::Point3F& transform_origin) { |
| if (transform_origin_ == transform_origin) |
| return; |
| transform_origin_ = transform_origin; |
| - NoteLayerPropertyChangedForSubtree(); |
| } |
| void LayerImpl::SetBackgroundColor(SkColor background_color) { |
| @@ -1296,7 +1314,6 @@ void LayerImpl::SetPosition(const gfx::PointF& position) { |
| return; |
| position_ = position; |
| - NoteLayerPropertyChangedForSubtree(); |
| } |
| void LayerImpl::SetShouldFlattenTransform(bool flatten) { |