Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4007)

Unified Diff: cc/tiles/tile_manager.cc

Issue 1854513002: cc: Add RasterSource::PlaybackSettings for finer control of raster. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/test/fake_raster_source.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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));
« no previous file with comments | « cc/test/fake_raster_source.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698