| Index: cc/trees/layer_tree_host_common.cc
|
| diff --git a/cc/trees/layer_tree_host_common.cc b/cc/trees/layer_tree_host_common.cc
|
| index aa9ad5e57255c40ffad3c20b50bf134c9416d9cb..a0bc6cc4d232a323ab27ce63ecef3489d50f1d7e 100644
|
| --- a/cc/trees/layer_tree_host_common.cc
|
| +++ b/cc/trees/layer_tree_host_common.cc
|
| @@ -268,6 +268,17 @@ static inline void UpdateTilePrioritiesForLayer(LayerImpl* layer) {
|
|
|
| static inline void UpdateTilePrioritiesForLayer(Layer* layer) {}
|
|
|
| +static inline void PrepareToUpdateLayer(LayerImpl* layer) {}
|
| +
|
| +static inline void PrepareToUpdateLayer(Layer* layer) {
|
| + layer->PrepareToUpdate();
|
| +
|
| + if (layer->mask_layer())
|
| + layer->mask_layer()->PrepareToUpdate();
|
| + if (layer->replica_layer() && layer->replica_layer()->mask_layer())
|
| + layer->replica_layer()->mask_layer()->PrepareToUpdate();
|
| +}
|
| +
|
| template <typename LayerType>
|
| static bool SubtreeShouldRenderToSeparateSurface(
|
| LayerType* layer,
|
| @@ -767,7 +778,8 @@ static void CalculateDrawPropertiesInternal(
|
| float page_scale_factor,
|
| bool subtree_can_use_lcd_text,
|
| gfx::Rect* drawable_content_rect_of_subtree,
|
| - bool update_tile_priorities) {
|
| + bool update_tile_priorities,
|
| + bool prepare_to_update) {
|
| // This function computes the new matrix transformations recursively for this
|
| // layer and all its descendants. It also computes the appropriate render
|
| // surfaces.
|
| @@ -1246,7 +1258,8 @@ static void CalculateDrawPropertiesInternal(
|
| page_scale_factor,
|
| subtree_can_use_lcd_text,
|
| &drawable_content_rect_of_child_subtree,
|
| - update_tile_priorities);
|
| + update_tile_priorities,
|
| + prepare_to_update);
|
| if (!drawable_content_rect_of_child_subtree.IsEmpty()) {
|
| accumulated_drawable_content_rect_of_children.Union(
|
| drawable_content_rect_of_child_subtree);
|
| @@ -1409,6 +1422,9 @@ static void CalculateDrawPropertiesInternal(
|
| layer->render_target()->render_surface()->
|
| AddContributingDelegatedRenderPassLayer(layer);
|
| }
|
| +
|
| + if (prepare_to_update)
|
| + PrepareToUpdateLayer(layer);
|
| }
|
|
|
| void LayerTreeHostCommon::CalculateDrawProperties(
|
| @@ -1430,6 +1446,7 @@ void LayerTreeHostCommon::CalculateDrawProperties(
|
| bool subtree_should_be_clipped = true;
|
| gfx::Rect device_viewport_rect(device_viewport_size);
|
| bool update_tile_priorities = false;
|
| + bool prepare_to_update = true;
|
|
|
| // This function should have received a root layer.
|
| DCHECK(IsRootLayer(root_layer));
|
| @@ -1454,7 +1471,8 @@ void LayerTreeHostCommon::CalculateDrawProperties(
|
| page_scale_factor,
|
| can_use_lcd_text,
|
| &total_drawable_content_rect,
|
| - update_tile_priorities);
|
| + update_tile_priorities,
|
| + prepare_to_update);
|
|
|
| // The dummy layer list should not have been used.
|
| DCHECK_EQ(0u, dummy_layer_list.size());
|
| @@ -1483,6 +1501,7 @@ void LayerTreeHostCommon::CalculateDrawProperties(
|
| // initial clip rect.
|
| bool subtree_should_be_clipped = true;
|
| gfx::Rect device_viewport_rect(device_viewport_size);
|
| + bool prepare_to_update = false;
|
|
|
| // This function should have received a root layer.
|
| DCHECK(IsRootLayer(root_layer));
|
| @@ -1508,7 +1527,8 @@ void LayerTreeHostCommon::CalculateDrawProperties(
|
| page_scale_factor,
|
| can_use_lcd_text,
|
| &total_drawable_content_rect,
|
| - update_tile_priorities);
|
| + update_tile_priorities,
|
| + prepare_to_update);
|
|
|
| // The dummy layer list should not have been used.
|
| DCHECK_EQ(0u, dummy_layer_list.size());
|
|
|