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 43513e79f4d9b370bcd386e9ab86c7493c888fee..4742dc1826230fadf8e37067e024535ff1c2a9af 100644 |
--- a/cc/trees/layer_tree_host_impl.cc |
+++ b/cc/trees/layer_tree_host_impl.cc |
@@ -229,7 +229,7 @@ LayerTreeHostImpl::LayerTreeHostImpl( |
gpu_memory_buffer_manager_(gpu_memory_buffer_manager), |
id_(id), |
requires_high_res_to_draw_(false), |
- required_for_draw_tile_is_top_of_raster_queue_(false) { |
+ is_likely_to_require_a_draw_(false) { |
DCHECK(proxy_->IsImplThread()); |
DidVisibilityChange(this, visible_); |
animation_registrar_->set_supports_scroll_animations( |
@@ -1202,20 +1202,6 @@ scoped_ptr<RasterTilePriorityQueue> LayerTreeHostImpl::BuildRasterQueue( |
GetPictureLayerImplPairs(&picture_layer_pairs_, true); |
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; |
- } |
return queue; |
} |
@@ -1229,6 +1215,15 @@ scoped_ptr<EvictionTilePriorityQueue> LayerTreeHostImpl::BuildEvictionQueue( |
return queue; |
} |
+void LayerTreeHostImpl::SetIsLikelyToRequireADraw( |
+ bool is_likely_to_require_a_draw) { |
+ // 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. |
+ is_likely_to_require_a_draw_ = is_likely_to_require_a_draw; |
+} |
+ |
const std::vector<PictureLayerImpl*>& LayerTreeHostImpl::GetPictureLayers() |
const { |
return picture_layers_; |
@@ -1242,7 +1237,7 @@ void LayerTreeHostImpl::NotifyReadyToDraw() { |
// Tiles that are ready will cause NotifyTileStateChanged() to be called so we |
// don't need to schedule a draw here. Just stop WillBeginImplFrame() from |
// causing optimistic requests to draw a frame. |
- required_for_draw_tile_is_top_of_raster_queue_ = false; |
+ is_likely_to_require_a_draw_ = false; |
client_->NotifyReadyToDraw(); |
} |
@@ -1612,7 +1607,7 @@ void LayerTreeHostImpl::WillBeginImplFrame(const BeginFrameArgs& args) { |
// Cache the begin impl frame interval |
begin_impl_frame_interval_ = args.interval; |
- if (required_for_draw_tile_is_top_of_raster_queue_) { |
+ if (is_likely_to_require_a_draw_) { |
// Optimistically schedule a draw, as a tile required for draw is at the top |
// of the current raster queue. This will let us expect the tile to complete |
// and draw it within the impl frame we are beginning now. |