| 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);
|
| }
|
|
|
|
|