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 |