| Index: cc/trees/draw_property_utils.cc
|
| diff --git a/cc/trees/draw_property_utils.cc b/cc/trees/draw_property_utils.cc
|
| index c9ead984cb713f6c5d5b0600881370d6fbad8d0c..1e6d2c74ebc7510bee61ed777bf7485700b95b4e 100644
|
| --- a/cc/trees/draw_property_utils.cc
|
| +++ b/cc/trees/draw_property_utils.cc
|
| @@ -157,11 +157,14 @@ void FindLayersThatNeedVisibleRects(Layer* layer,
|
| const TransformTree& tree,
|
| bool subtree_is_visible_from_ancestor,
|
| std::vector<Layer*>* layers_to_update) {
|
| - const bool subtree_is_invisble =
|
| - layer->opacity() == 0.0f ||
|
| + const bool layer_is_invisible =
|
| + (!layer->opacity() && !layer->OpacityIsAnimating() &&
|
| + !layer->OpacityCanAnimateOnImplThread());
|
| + const bool layer_is_backfacing =
|
| (layer->has_render_surface() && !layer->double_sided() &&
|
| IsSurfaceBackFaceExposed(layer, tree));
|
|
|
| + const bool subtree_is_invisble = layer_is_invisible || layer_is_backfacing;
|
| if (subtree_is_invisble)
|
| return;
|
|
|
| @@ -262,10 +265,11 @@ void ComputeVisibleRectsUsingPropertyTrees(
|
| const gfx::Rect& viewport,
|
| const gfx::Transform& device_transform,
|
| TransformTree* transform_tree,
|
| - ClipTree* clip_tree) {
|
| + ClipTree* clip_tree,
|
| + OpacityTree* opacity_tree) {
|
| PropertyTreeBuilder::BuildPropertyTrees(
|
| root_layer, page_scale_layer, page_scale_factor, device_scale_factor,
|
| - viewport, device_transform, transform_tree, clip_tree);
|
| + viewport, device_transform, transform_tree, clip_tree, opacity_tree);
|
| ComputeTransforms(transform_tree);
|
| ComputeClips(clip_tree, *transform_tree);
|
|
|
|
|