| Index: cc/trees/property_tree_builder.cc
|
| diff --git a/cc/trees/property_tree_builder.cc b/cc/trees/property_tree_builder.cc
|
| index 85bdbececf615f892b1b4e1b89399b9a530ab733..c3c9afc3c8a93534a2ecacc6aa0564cd8cb2705c 100644
|
| --- a/cc/trees/property_tree_builder.cc
|
| +++ b/cc/trees/property_tree_builder.cc
|
| @@ -574,6 +574,8 @@ bool AddEffectNodeIfNeeded(
|
| node.data.opacity = layer->opacity();
|
| node.data.screen_space_opacity = layer->opacity();
|
| node.data.has_render_surface = should_create_render_surface;
|
| + node.data.has_copy_request = layer->HasCopyRequest();
|
| + node.data.has_background_filters = !layer->background_filters().IsEmpty();
|
|
|
| if (!is_root) {
|
| // The effect node's transform id is used only when we create a render
|
| @@ -588,9 +590,9 @@ bool AddEffectNodeIfNeeded(
|
| }
|
| node.data.clip_id = data_from_ancestor.clip_tree_parent;
|
|
|
| - node.data.screen_space_opacity *=
|
| - data_from_ancestor.effect_tree->Node(parent_id)
|
| - ->data.screen_space_opacity;
|
| + EffectNode* parent = data_from_ancestor.effect_tree->Node(parent_id);
|
| + node.data.screen_space_opacity_is_animating =
|
| + parent->data.screen_space_opacity_is_animating || has_animated_opacity;
|
| } else {
|
| // Root render surface acts the unbounded and untransformed to draw content
|
| // into. Transform node created from root layer (includes device scale
|
| @@ -598,6 +600,7 @@ bool AddEffectNodeIfNeeded(
|
| // to root render surface's content, but not root render surface itself.
|
| node.data.transform_id = kRootPropertyTreeNodeId;
|
| node.data.clip_id = kRootPropertyTreeNodeId;
|
| + node.data.screen_space_opacity_is_animating = has_animated_opacity;
|
| }
|
| data_for_children->effect_tree_parent =
|
| data_for_children->effect_tree->Insert(node, parent_id);
|
| @@ -637,10 +640,6 @@ void BuildPropertyTreesInternal(
|
| AddClipNodeIfNeeded(data_from_parent, layer, created_render_surface,
|
| created_transform_node, &data_for_children);
|
|
|
| - data_for_children.is_hidden =
|
| - layer->hide_layer_and_subtree() || data_from_parent.is_hidden;
|
| - layer->set_is_hidden_from_property_trees(data_for_children.is_hidden);
|
| -
|
| for (size_t i = 0; i < layer->children().size(); ++i) {
|
| if (!layer->child_at(i)->scroll_parent()) {
|
| DataForRecursionFromChild<LayerType> data_from_child;
|
| @@ -756,11 +755,11 @@ void BuildPropertyTreesTopLevelInternal(
|
| property_trees->needs_rebuild = false;
|
|
|
| // The transform tree is kept up-to-date as it is built, but the
|
| - // combined_clips stored in the clip tree aren't computed during tree
|
| - // building.
|
| + // combined_clips stored in the clip tree and the screen_space_opacity and
|
| + // is_drawn in the effect tree aren't computed during tree building.
|
| property_trees->transform_tree.set_needs_update(false);
|
| property_trees->clip_tree.set_needs_update(true);
|
| - property_trees->effect_tree.set_needs_update(false);
|
| + property_trees->effect_tree.set_needs_update(true);
|
| }
|
|
|
| void PropertyTreeBuilder::BuildPropertyTrees(
|
|
|