| Index: cc/resources/tile_manager.cc
|
| diff --git a/cc/resources/tile_manager.cc b/cc/resources/tile_manager.cc
|
| index a6693529fc1dda2fedf6e4e4fe38bd0f09af97bd..dff3a52f871ac6a80cd05b77e92fc25ab6b14fed 100644
|
| --- a/cc/resources/tile_manager.cc
|
| +++ b/cc/resources/tile_manager.cc
|
| @@ -418,6 +418,28 @@
|
| tiles_that_need_to_be_rasterized, resource_pool_,
|
| base::Bind(&TileManager::UpdateTileDrawInfo, base::Unretained(this)));
|
|
|
| + // Use on-demand raster for any required-for-activation tiles that have not
|
| + // been been assigned memory after reaching a steady memory state. This
|
| + // ensures that we activate even when OOM. Note that we have to rebuilt the
|
| + // queue in case the last AssignGpuMemoryToTiles evicted some tiles that would
|
| + // otherwise not be picked up by the old raster queue.
|
| + client_->BuildRasterQueue(&raster_priority_queue_,
|
| + global_state_.tree_priority);
|
| +
|
| + // Use on-demand raster for any tiles that have not been been assigned
|
| + // memory. This ensures that we draw even when OOM.
|
| + while (!raster_priority_queue_.IsEmpty()) {
|
| + Tile* tile = raster_priority_queue_.Top();
|
| + TileDrawInfo& draw_info = tile->draw_info();
|
| +
|
| + if (tile->required_for_draw() && !draw_info.IsReadyToDraw()) {
|
| + draw_info.set_rasterize_on_demand();
|
| + client_->NotifyTileStateChanged(tile);
|
| + }
|
| + raster_priority_queue_.Pop();
|
| + }
|
| + raster_priority_queue_.Reset();
|
| +
|
| TRACE_EVENT_INSTANT1("cc", "DidRasterize", TRACE_EVENT_SCOPE_THREAD, "state",
|
| BasicStateAsValue());
|
|
|
|
|