diff options
author | ajuma <ajuma@chromium.org> | 2015-10-06 18:22:08 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-10-07 01:23:22 +0000 |
commit | 01734dd03738b254762e24335f6b3190daca813c (patch) | |
tree | a732aae021672be02ec9fabe50f5e616f3296272 /cc/trees/property_tree.cc | |
parent | f1b6738e27e2e31e5f8da99f3367ccb3d3c2911f (diff) | |
download | chromium_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.cc | 5 |
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), |