summaryrefslogtreecommitdiffstats
path: root/cc/trees/property_tree.cc
diff options
context:
space:
mode:
authorajuma <ajuma@chromium.org>2015-10-06 18:22:08 -0700
committerCommit bot <commit-bot@chromium.org>2015-10-07 01:23:22 +0000
commit01734dd03738b254762e24335f6b3190daca813c (patch)
treea732aae021672be02ec9fabe50f5e616f3296272 /cc/trees/property_tree.cc
parentf1b6738e27e2e31e5f8da99f3367ccb3d3c2911f (diff)
downloadchromium_src-01734dd03738b254762e24335f6b3190daca813c.zip
chromium_src-01734dd03738b254762e24335f6b3190daca813c.tar.gz
chromium_src-01734dd03738b254762e24335f6b3190daca813c.tar.bz2
cc: Make the structure of the clip tree independent of render surfaces
Currently, unclipped render surfaces cause the clip nodes created for descendants to get reparented to the clip tree's root node. This means that ancestor/descendant relationships in the clip tree depend on which layers have surfaces. This is problematic when render surfaces get removed on the compositor thread (as in resourceless software mode), since we can't propagate clips to nodes reparented to the root (since we don't know who their real ancestors are). This CL sets a 'resets_clip' bool on unclipped ClipNodes rather than reparenting them to the root, so that ancestor/descendant relationships are preserved. BUG=524106 CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1387583002 Cr-Commit-Position: refs/heads/master@{#352733}
Diffstat (limited to 'cc/trees/property_tree.cc')
-rw-r--r--cc/trees/property_tree.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/cc/trees/property_tree.cc b/cc/trees/property_tree.cc
index d45d065..86a776a 100644
--- a/cc/trees/property_tree.cc
+++ b/cc/trees/property_tree.cc
@@ -101,11 +101,12 @@ void TransformNodeData::update_post_local_transform(
ClipNodeData::ClipNodeData()
: transform_id(-1),
target_id(-1),
- use_only_parent_clip(false),
+ applies_local_clip(true),
layer_clipping_uses_only_local_clip(false),
layer_visibility_uses_only_local_clip(false),
render_surface_is_clipped(false),
- layers_are_clipped(false) {}
+ layers_are_clipped(false),
+ resets_clip(false) {}
EffectNodeData::EffectNodeData()
: opacity(1.f),