Index: cc/tiles/image_controller.cc |
diff --git a/cc/tiles/image_controller.cc b/cc/tiles/image_controller.cc |
index e8021e4264e0f41845b646f9fa974b3c3c4910d2..a46211dfa6325e7ce7ede8bd6680bbf464398244 100644 |
--- a/cc/tiles/image_controller.cc |
+++ b/cc/tiles/image_controller.cc |
@@ -179,7 +179,8 @@ std::vector<scoped_refptr<TileTask>> ImageController::SetPredecodeImages( |
ImageController::ImageDecodeRequestId ImageController::QueueImageDecode( |
sk_sp<const SkImage> image, |
- const ImageDecodedCallback& callback) { |
+ const ImageDecodedCallback& callback, |
+ ImageDecodeCache::ImageDecodeType type) { |
// We must not receive any image requests if we have no worker. |
CHECK(worker_task_runner_); |
@@ -207,15 +208,15 @@ ImageController::ImageDecodeRequestId ImageController::QueueImageDecode( |
bool need_unref = false; |
if (is_image_lazy) { |
need_unref = |
- cache_->GetOutOfRasterDecodeTaskForImageAndRef(draw_image, &task); |
+ cache_->GetOutOfRasterDecodeTaskForImageAndRef(draw_image, type, &task); |
} |
// If we don't need to unref this, we don't actually have a task. |
DCHECK(need_unref || !task); |
// Schedule the task and signal that there is more work. |
base::AutoLock hold(lock_); |
- image_decode_queue_[id] = |
- ImageDecodeRequest(id, draw_image, callback, std::move(task), need_unref); |
+ image_decode_queue_[id] = ImageDecodeRequest( |
+ id, draw_image, callback, std::move(task), need_unref, type); |
// If this is the only image decode request, schedule a task to run. |
// Otherwise, the task will be scheduled in the previou task's completion. |
@@ -346,7 +347,7 @@ void ImageController::GenerateTasksForOrphanedRequests() { |
if (request.draw_image.image()->isLazyGenerated()) { |
// Get the task for this decode. |
request.need_unref = cache_->GetOutOfRasterDecodeTaskForImageAndRef( |
- request.draw_image, &request.task); |
+ request.draw_image, request.decode_type, &request.task); |
} |
image_decode_queue_[request.id] = std::move(request); |
} |
@@ -367,12 +368,14 @@ ImageController::ImageDecodeRequest::ImageDecodeRequest( |
const DrawImage& draw_image, |
const ImageDecodedCallback& callback, |
scoped_refptr<TileTask> task, |
- bool need_unref) |
+ bool need_unref, |
+ ImageDecodeCache::ImageDecodeType decode_type) |
: id(id), |
draw_image(draw_image), |
callback(callback), |
task(std::move(task)), |
- need_unref(need_unref) {} |
+ need_unref(need_unref), |
+ decode_type(decode_type) {} |
ImageController::ImageDecodeRequest::ImageDecodeRequest( |
ImageDecodeRequest&& other) = default; |
ImageController::ImageDecodeRequest::ImageDecodeRequest( |