Index: cc/trees/layer_tree_host_impl.cc |
diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc |
index 7c509601decc9aa152a3c41ac2665322d59a64dc..12f6251ada89c9157edd7eedd182b338588400db 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -1203,18 +1203,23 @@ scoped_ptr<RasterTilePriorityQueue> LayerTreeHostImpl::BuildRasterQueue( |
scoped_ptr<RasterTilePriorityQueue> queue(RasterTilePriorityQueue::Create( |
picture_layer_pairs_, tree_priority, type)); |
- if (!queue->IsEmpty()) { |
- // Only checking the Top() tile here isn't a definite answer that there is |
- // or isn't something required for draw in this raster queue. It's just a |
- // heuristic to let us hit the common case and proactively tell the |
- // scheduler that we expect to draw within each vsync until we get all the |
- // tiles ready to draw. If we happen to miss a required for draw tile here, |
- // then we will miss telling the scheduler each frame that we intend to draw |
- // so it may make worse scheduling decisions. |
- required_for_draw_tile_is_top_of_raster_queue_ = |
- queue->Top()->required_for_draw(); |
- } else { |
- required_for_draw_tile_is_top_of_raster_queue_ = false; |
+ // Only check whether the top tile is required for draw if we're not building |
+ // a required for activation queue. |
+ // TODO(vmpstr): Remove side-effects from this function. crbug.com/451147 |
+ if (type != RasterTilePriorityQueue::Type::REQUIRED_FOR_ACTIVATION) { |
+ if (!queue->IsEmpty()) { |
+ // Only checking the Top() tile here isn't a definite answer that there is |
+ // or isn't something required for draw in this raster queue. It's just a |
+ // heuristic to let us hit the common case and proactively tell the |
+ // scheduler that we expect to draw within each vsync until we get all the |
+ // tiles ready to draw. If we happen to miss a required for draw tile |
+ // here, then we will miss telling the scheduler each frame that we intend |
+ // to draw so it may make worse scheduling decisions. |
+ required_for_draw_tile_is_top_of_raster_queue_ = |
+ queue->Top()->required_for_draw(); |
+ } else { |
+ required_for_draw_tile_is_top_of_raster_queue_ = false; |
+ } |
} |
return queue; |
} |