Index: cc/tiles/image_manager.cc |
diff --git a/cc/tiles/image_manager.cc b/cc/tiles/image_manager.cc |
index cb11e9ec19266ae01c1577b07fb3b2dfe7e13996..bec8ca2061ea084d92011d83ff288683883c92d1 100644 |
--- a/cc/tiles/image_manager.cc |
+++ b/cc/tiles/image_manager.cc |
@@ -10,6 +10,14 @@ ImageManager::ImageManager() = default; |
ImageManager::~ImageManager() = default; |
void ImageManager::SetImageDecodeController(ImageDecodeController* controller) { |
+ // We can only switch from null to non-null and back. |
+ DCHECK(controller || controller_); |
+ DCHECK(!controller || !controller_); |
+ |
+ if (!controller) { |
+ SetPredecodeImages(std::vector<DrawImage>(), |
+ ImageDecodeController::TracingInfo()); |
+ } |
controller_ = controller; |
} |
@@ -43,4 +51,14 @@ void ImageManager::ReduceMemoryUsage() { |
controller_->ReduceCacheUsage(); |
} |
+std::vector<scoped_refptr<TileTask>> ImageManager::SetPredecodeImages( |
+ std::vector<DrawImage> images, |
+ const ImageDecodeController::TracingInfo& tracing_info) { |
+ std::vector<scoped_refptr<TileTask>> new_tasks; |
+ GetTasksForImagesAndRef(&images, &new_tasks, tracing_info); |
+ UnrefImages(predecode_locked_images_); |
+ predecode_locked_images_ = std::move(images); |
+ return new_tasks; |
+} |
+ |
} // namespace cc |