Index: cc/playback/image_hijack_canvas.cc |
diff --git a/cc/playback/image_hijack_canvas.cc b/cc/playback/image_hijack_canvas.cc |
index d0c5c5c72b519bfdeada973b1fedfdcfee6f3dd9..8927f79ddce96c6a02e5e8218f1abef19f2cb4ae 100644 |
--- a/cc/playback/image_hijack_canvas.cc |
+++ b/cc/playback/image_hijack_canvas.cc |
@@ -23,11 +23,13 @@ class ScopedDecodedImageLock { |
const SkImage* image, |
const SkRect& src_rect, |
const SkMatrix& matrix, |
- const SkPaint* paint) |
+ const SkPaint* paint, |
+ SkFilterQuality max_quality) |
: image_decode_controller_(image_decode_controller), |
draw_image_(image, |
RoundOutRect(src_rect), |
- paint ? paint->getFilterQuality() : kNone_SkFilterQuality, |
+ paint ? std::min(max_quality, paint->getFilterQuality()) |
+ : kNone_SkFilterQuality, |
matrix), |
decoded_draw_image_( |
image_decode_controller_->GetDecodedImageForDraw(draw_image_)) { |
@@ -58,9 +60,11 @@ class ScopedDecodedImageLock { |
ImageHijackCanvas::ImageHijackCanvas( |
int width, |
int height, |
- ImageDecodeController* image_decode_controller) |
+ ImageDecodeController* image_decode_controller, |
+ SkFilterQuality max_quality) |
: SkNWayCanvas(width, height), |
- image_decode_controller_(image_decode_controller) {} |
+ image_decode_controller_(image_decode_controller), |
+ max_quality_(max_quality) {} |
void ImageHijackCanvas::onDrawPicture(const SkPicture* picture, |
const SkMatrix* matrix, |
@@ -83,7 +87,8 @@ void ImageHijackCanvas::onDrawImage(const SkImage* image, |
ScopedDecodedImageLock scoped_lock( |
image_decode_controller_, image, |
- SkRect::MakeIWH(image->width(), image->height()), ctm, paint); |
+ SkRect::MakeIWH(image->width(), image->height()), ctm, paint, |
+ max_quality_); |
const DecodedDrawImage& decoded_image = scoped_lock.decoded_image(); |
if (!decoded_image.image()) |
return; |
@@ -123,7 +128,7 @@ void ImageHijackCanvas::onDrawImageRect(const SkImage* image, |
matrix.postConcat(getTotalMatrix()); |
ScopedDecodedImageLock scoped_lock(image_decode_controller_, image, *src, |
- matrix, paint); |
+ matrix, paint, max_quality_); |
const DecodedDrawImage& decoded_image = scoped_lock.decoded_image(); |
if (!decoded_image.image()) |
return; |