Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Unified Diff: cc/trees/property_tree.cc

Issue 1949253006: cc: Ensure damage in property tree nodes gets propagated to descendants (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2704
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/trees/property_tree.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/trees/property_tree.cc
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
index de0096bca4ef9a192051c29a941135273c593540..216467641cc649d90dcf64c066adeb5e88d8f8a9 100644
--- a/cc/trees/property_tree.cc
+++ b/cc/trees/property_tree.cc
@@ -1892,6 +1892,20 @@ void PropertyTrees::SetInnerViewportScrollBoundsDelta(
inner_viewport_scroll_bounds_delta_ = bounds_delta;
}
+void PropertyTrees::UpdateChangeTracking() {
+ for (int id = 1; id < static_cast<int>(effect_tree.size()); ++id) {
+ EffectNode* node = effect_tree.Node(id);
+ EffectNode* parent_node = effect_tree.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);
+ TransformNode* parent_node = transform_tree.parent(node);
+ TransformNode* source_node = transform_tree.Node(node->data.source_node_id);
+ transform_tree.UpdateTransformChanged(node, parent_node, source_node);
+ }
+}
+
void PropertyTrees::PushChangeTrackingTo(PropertyTrees* tree) {
for (int id = 1; id < static_cast<int>(effect_tree.size()); ++id) {
EffectNode* node = effect_tree.Node(id);
@@ -1907,6 +1921,9 @@ void PropertyTrees::PushChangeTrackingTo(PropertyTrees* tree) {
target_node->data.transform_changed = true;
}
}
+ // Ensure that change tracking is updated even if property trees don't have
+ // other reasons to get updated.
+ tree->UpdateChangeTracking();
tree->full_tree_damaged = full_tree_damaged;
}
« no previous file with comments | « cc/trees/property_tree.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698