| Index: cc/playback/image_hijack_canvas.cc
|
| diff --git a/cc/playback/image_hijack_canvas.cc b/cc/playback/image_hijack_canvas.cc
|
| index a5d596d7e2f88a1eab3ba5b62cfcad2fe3cbcb26..b26d38ec1f3ca76492d574f223853501bf15d071 100644
|
| --- a/cc/playback/image_hijack_canvas.cc
|
| +++ b/cc/playback/image_hijack_canvas.cc
|
| @@ -120,10 +120,14 @@ class ScopedImagePaint {
|
|
|
| } // namespace
|
|
|
| -ImageHijackCanvas::ImageHijackCanvas(int width,
|
| - int height,
|
| - ImageDecodeCache* image_decode_cache)
|
| - : SkNWayCanvas(width, height), image_decode_cache_(image_decode_cache) {}
|
| +ImageHijackCanvas::ImageHijackCanvas(
|
| + int width,
|
| + int height,
|
| + ImageDecodeCache* image_decode_cache,
|
| + const std::unordered_set<ImageId>* images_to_skip)
|
| + : SkNWayCanvas(width, height),
|
| + image_decode_cache_(image_decode_cache),
|
| + images_to_skip_(images_to_skip) {}
|
|
|
| void ImageHijackCanvas::onDrawPicture(const SkPicture* picture,
|
| const SkMatrix* matrix,
|
| @@ -138,10 +142,14 @@ void ImageHijackCanvas::onDrawImage(const SkImage* image,
|
| SkScalar y,
|
| const SkPaint* paint) {
|
| if (!image->isLazyGenerated()) {
|
| + DCHECK(!ShouldSkipImage(image));
|
| SkNWayCanvas::onDrawImage(image, x, y, paint);
|
| return;
|
| }
|
|
|
| + if (ShouldSkipImage(image))
|
| + return;
|
| +
|
| SkMatrix ctm = getTotalMatrix();
|
|
|
| ScopedDecodedImageLock scoped_lock(
|
| @@ -172,10 +180,14 @@ void ImageHijackCanvas::onDrawImageRect(const SkImage* image,
|
| const SkPaint* paint,
|
| SrcRectConstraint constraint) {
|
| if (!image->isLazyGenerated()) {
|
| + DCHECK(!ShouldSkipImage(image));
|
| SkNWayCanvas::onDrawImageRect(image, src, dst, paint, constraint);
|
| return;
|
| }
|
|
|
| + if (ShouldSkipImage(image))
|
| + return;
|
| +
|
| SkRect src_storage;
|
| if (!src) {
|
| src_storage = SkRect::MakeIWH(image->width(), image->height());
|
| @@ -270,4 +282,8 @@ void ImageHijackCanvas::onDrawImageNine(const SkImage* image,
|
| NOTREACHED();
|
| }
|
|
|
| +bool ImageHijackCanvas::ShouldSkipImage(const SkImage* image) {
|
| + return images_to_skip_->find(image->uniqueID()) != images_to_skip_->end();
|
| +}
|
| +
|
| } // namespace cc
|
|
|