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..f0fc139ed6d32b821141bdcdc41c368e2e498a1b 100644 |
--- a/cc/playback/image_hijack_canvas.cc |
+++ b/cc/playback/image_hijack_canvas.cc |
@@ -20,18 +20,18 @@ SkIRect RoundOutRect(const SkRect& rect) { |
class ScopedDecodedImageLock { |
public: |
ScopedDecodedImageLock(ImageDecodeController* image_decode_controller, |
- const SkImage* image, |
+ sk_sp<const SkImage> image, |
const SkRect& src_rect, |
const SkMatrix& matrix, |
const SkPaint* paint) |
: image_decode_controller_(image_decode_controller), |
- draw_image_(image, |
+ draw_image_(std::move(image), |
RoundOutRect(src_rect), |
paint ? paint->getFilterQuality() : kNone_SkFilterQuality, |
matrix), |
decoded_draw_image_( |
image_decode_controller_->GetDecodedImageForDraw(draw_image_)) { |
- DCHECK(image->isLazyGenerated()); |
+ DCHECK(draw_image_.image()->isLazyGenerated()); |
if (paint) |
decoded_paint_.set(*paint)->setFilterQuality( |
decoded_draw_image_.filter_quality()); |
@@ -82,7 +82,7 @@ void ImageHijackCanvas::onDrawImage(const SkImage* image, |
SkMatrix ctm = getTotalMatrix(); |
ScopedDecodedImageLock scoped_lock( |
- image_decode_controller_, image, |
+ image_decode_controller_, sk_ref_sp(image), |
SkRect::MakeIWH(image->width(), image->height()), ctm, paint); |
const DecodedDrawImage& decoded_image = scoped_lock.decoded_image(); |
if (!decoded_image.image()) |
@@ -98,7 +98,7 @@ void ImageHijackCanvas::onDrawImage(const SkImage* image, |
SkNWayCanvas::scale(1.f / (decoded_image.scale_adjustment().width()), |
1.f / (decoded_image.scale_adjustment().height())); |
} |
- SkNWayCanvas::onDrawImage(decoded_image.image(), x, y, decoded_paint); |
+ SkNWayCanvas::onDrawImage(decoded_image.image().get(), x, y, decoded_paint); |
if (need_scale) |
SkNWayCanvas::restore(); |
} |
@@ -122,8 +122,8 @@ void ImageHijackCanvas::onDrawImageRect(const SkImage* image, |
matrix.setRectToRect(*src, dst, SkMatrix::kFill_ScaleToFit); |
matrix.postConcat(getTotalMatrix()); |
- ScopedDecodedImageLock scoped_lock(image_decode_controller_, image, *src, |
- matrix, paint); |
+ ScopedDecodedImageLock scoped_lock(image_decode_controller_, sk_ref_sp(image), |
+ *src, matrix, paint); |
const DecodedDrawImage& decoded_image = scoped_lock.decoded_image(); |
if (!decoded_image.image()) |
return; |
@@ -140,7 +140,7 @@ void ImageHijackCanvas::onDrawImageRect(const SkImage* image, |
adjusted_src.x() * x_scale, adjusted_src.y() * y_scale, |
adjusted_src.width() * x_scale, adjusted_src.height() * y_scale); |
} |
- SkNWayCanvas::onDrawImageRect(decoded_image.image(), &adjusted_src, dst, |
+ SkNWayCanvas::onDrawImageRect(decoded_image.image().get(), &adjusted_src, dst, |
decoded_paint, constraint); |
} |