Index: cc/layers/layer.cc |
diff --git a/cc/layers/layer.cc b/cc/layers/layer.cc |
index 44679fcff16ab06fab76b2e17acdf7459885d89a..78c8591841a5f26301907ca5aefad47e765c557e 100644 |
--- a/cc/layers/layer.cc |
+++ b/cc/layers/layer.cc |
@@ -254,8 +254,14 @@ void Layer::SetParent(Layer* layer) { |
parent_ = layer; |
SetLayerTreeHost(parent_ ? parent_->layer_tree_host() : nullptr); |
+ if (!layer) |
+ InvalidatePropertyTreeIndices(); |
ajuma
2015/05/20 13:54:03
I'm a bit worried about the perf impact of this. I
|
+ |
if (!layer_tree_host_) |
return; |
+ |
+ layer_tree_host_->property_trees()->needs_rebuild = true; |
+ |
const LayerTreeSettings& settings = layer_tree_host_->settings(); |
if (!settings.layer_transforms_should_scale_layer_contents) |
return; |
@@ -1520,4 +1526,15 @@ void Layer::DidBeginTracing() { |
SetNeedsPushProperties(); |
} |
+void Layer::InvalidatePropertyTreeIndices() { |
+ transform_tree_index_ = -1; |
+ clip_tree_index_ = -1; |
+ opacity_tree_index_ = -1; |
+ |
+ for (size_t i = 0; i < children().size(); ++i) { |
+ Layer* child_layer = child_at(i); |
+ child_layer->InvalidatePropertyTreeIndices(); |
+ } |
+} |
+ |
} // namespace cc |