Index: cc/trees/property_tree.h |
diff --git a/cc/trees/property_tree.h b/cc/trees/property_tree.h |
index eea67f77cefc664970bddba85dcc9b1e2436e753..20e42c99f9c65e42ed9a74bbad0b599f4006f075 100644 |
--- a/cc/trees/property_tree.h |
+++ b/cc/trees/property_tree.h |
@@ -82,7 +82,9 @@ class CC_EXPORT PropertyTree { |
void clear(); |
size_t size() const { return nodes_.size(); } |
- void set_needs_update(bool needs_update) { needs_update_ = needs_update; } |
+ virtual void set_needs_update(bool needs_update) { |
+ needs_update_ = needs_update; |
+ } |
bool needs_update() const { return needs_update_; } |
std::vector<T>& nodes() { return nodes_; } |
@@ -97,9 +99,18 @@ class CC_EXPORT PropertyTree { |
void AsValueInto(base::trace_event::TracedValue* value) const; |
- T* FindNodeFromOwningLayerId(int id) { |
+ const T* FindNodeFromOwningLayerId(int id) const { |
return Node(FindNodeIndexFromOwningLayerId(id)); |
} |
+ T* UpdateNodeFromOwningLayerId(int id) { |
+ int index = FindNodeIndexFromOwningLayerId(id); |
+ if (index == kInvalidNodeId && property_trees()->is_main_thread) { |
+ property_trees()->needs_rebuild = true; |
+ } |
+ |
+ return Node(index); |
+ } |
+ |
int FindNodeIndexFromOwningLayerId(int id) const { |
auto iter = owning_layer_id_to_node_index.find(id); |
if (iter == owning_layer_id_to_node_index.end()) |
@@ -183,7 +194,7 @@ class CC_EXPORT TransformTree final : public PropertyTree<TransformNode> { |
TransformNode* node, |
TransformNode* parent_node); |
- void set_needs_update(bool needs_update); |
+ void set_needs_update(bool needs_update) final; |
// A TransformNode's source_to_parent value is used to account for the fact |
// that fixed-position layers are positioned by Blink wrt to their layer tree |