| Index: cc/tiles/tile_manager.cc
|
| diff --git a/cc/tiles/tile_manager.cc b/cc/tiles/tile_manager.cc
|
| index 6df710bfd49dfee1880f52650b6e714350a9d214..68408e4ded02b983d804ccd6e9f0bfea2b3a7abc 100644
|
| --- a/cc/tiles/tile_manager.cc
|
| +++ b/cc/tiles/tile_manager.cc
|
| @@ -48,7 +48,7 @@ class RasterTaskImpl : public RasterTask {
|
| const gfx::Rect& content_rect,
|
| const gfx::Rect& invalid_content_rect,
|
| float contents_scale,
|
| - bool include_images,
|
| + const RasterSource::PlaybackSettings& playback_settings,
|
| TileResolution tile_resolution,
|
| int layer_id,
|
| uint64_t source_prepare_tiles_id,
|
| @@ -65,7 +65,7 @@ class RasterTaskImpl : public RasterTask {
|
| content_rect_(content_rect),
|
| invalid_content_rect_(invalid_content_rect),
|
| contents_scale_(contents_scale),
|
| - include_images_(include_images),
|
| + playback_settings_(playback_settings),
|
| tile_resolution_(tile_resolution),
|
| layer_id_(layer_id),
|
| source_prepare_tiles_id_(source_prepare_tiles_id),
|
| @@ -93,7 +93,7 @@ class RasterTaskImpl : public RasterTask {
|
|
|
| raster_buffer_->Playback(raster_source_.get(), content_rect_,
|
| invalid_content_rect_, new_content_id_,
|
| - contents_scale_, include_images_);
|
| + contents_scale_, playback_settings_);
|
| }
|
|
|
| // Overridden from TileTask:
|
| @@ -116,7 +116,7 @@ class RasterTaskImpl : public RasterTask {
|
| gfx::Rect content_rect_;
|
| gfx::Rect invalid_content_rect_;
|
| float contents_scale_;
|
| - bool include_images_;
|
| + RasterSource::PlaybackSettings playback_settings_;
|
| TileResolution tile_resolution_;
|
| int layer_id_;
|
| uint64_t source_prepare_tiles_id_;
|
| @@ -848,18 +848,22 @@ scoped_refptr<RasterTask> TileManager::CreateRasterTask(
|
| }
|
|
|
| // For LOW_RESOLUTION tiles, we don't draw or predecode images.
|
| - const bool include_images =
|
| - prioritized_tile.priority().resolution != LOW_RESOLUTION;
|
| + RasterSource::PlaybackSettings playback_settings;
|
| + playback_settings.skip_images =
|
| + prioritized_tile.priority().resolution == LOW_RESOLUTION;
|
|
|
| // Create and queue all image decode tasks that this tile depends on.
|
| ImageDecodeTask::Vector decode_tasks;
|
| std::vector<DrawImage>& images = scheduled_draw_images_[tile->id()];
|
| images.clear();
|
| - if (include_images) {
|
| + if (!playback_settings.skip_images) {
|
| prioritized_tile.raster_source()->GetDiscardableImagesInRect(
|
| tile->enclosing_layer_rect(), tile->contents_scale(), &images);
|
| }
|
|
|
| + // TODO(vmpstr): We should disable image hijack canvas in
|
| + // |playback_settings| here if |images| is empty.
|
| +
|
| for (auto it = images.begin(); it != images.end();) {
|
| scoped_refptr<ImageDecodeTask> task;
|
| bool need_to_unref_when_finished =
|
| @@ -876,10 +880,11 @@ scoped_refptr<RasterTask> TileManager::CreateRasterTask(
|
|
|
| return make_scoped_refptr(new RasterTaskImpl(
|
| resource, prioritized_tile.raster_source(), tile->content_rect(),
|
| - tile->invalidated_content_rect(), tile->contents_scale(), include_images,
|
| - prioritized_tile.priority().resolution, tile->layer_id(),
|
| - prepare_tiles_count_, static_cast<const void*>(tile), tile->id(),
|
| - tile->invalidated_id(), resource_content_id, tile->source_frame_number(),
|
| + tile->invalidated_content_rect(), tile->contents_scale(),
|
| + playback_settings, prioritized_tile.priority().resolution,
|
| + tile->layer_id(), prepare_tiles_count_, static_cast<const void*>(tile),
|
| + tile->id(), tile->invalidated_id(), resource_content_id,
|
| + tile->source_frame_number(),
|
| base::Bind(&TileManager::OnRasterTaskCompleted, base::Unretained(this),
|
| tile->id(), resource),
|
| &decode_tasks));
|
|
|