Index: cc/playback/display_list_raster_source.cc |
diff --git a/cc/playback/display_list_raster_source.cc b/cc/playback/display_list_raster_source.cc |
index d1a9fc40d051438e6ba269e0bed53766f240bcd6..f20252d66fac46a8549a7a26761a32a557b7eafe 100644 |
--- a/cc/playback/display_list_raster_source.cc |
+++ b/cc/playback/display_list_raster_source.cc |
@@ -16,6 +16,7 @@ |
#include "skia/ext/analysis_canvas.h" |
#include "third_party/skia/include/core/SkCanvas.h" |
#include "third_party/skia/include/core/SkPictureRecorder.h" |
+#include "third_party/skia/include/core/SkTLazy.h" |
#include "third_party/skia/include/utils/SkNWayCanvas.h" |
#include "ui/gfx/geometry/rect_conversions.h" |
@@ -145,7 +146,6 @@ class ImageHijackCanvas : public SkNWayCanvas { |
bool has_perspective, |
const SkPaint* paint) |
: image_decode_controller_(image_decode_controller), |
- paint_(paint), |
draw_image_(image, |
RoundOutRect(src_rect), |
scale, |
@@ -155,10 +155,9 @@ class ImageHijackCanvas : public SkNWayCanvas { |
decoded_draw_image_( |
image_decode_controller_->GetDecodedImageForDraw(draw_image_)) { |
DCHECK(image->isLazyGenerated()); |
- if (paint) { |
- decoded_paint_ = *paint; |
- decoded_paint_.setFilterQuality(decoded_draw_image_.filter_quality()); |
- } |
+ if (paint) |
+ decoded_paint_.set(*paint)->setFilterQuality( |
+ decoded_draw_image_.filter_quality()); |
} |
~ScopedDecodedImageLock() { |
@@ -170,15 +169,15 @@ class ImageHijackCanvas : public SkNWayCanvas { |
return decoded_draw_image_; |
} |
const SkPaint* decoded_paint() const { |
- return paint_ ? &decoded_paint_ : nullptr; |
+ return decoded_paint_.getMaybeNull(); |
} |
private: |
ImageDecodeController* image_decode_controller_; |
- const SkPaint* paint_; |
DrawImage draw_image_; |
DecodedDrawImage decoded_draw_image_; |
- SkPaint decoded_paint_; |
+ // TODO(fmalita): use base::Optional when it becomes available |
+ SkTLazy<SkPaint> decoded_paint_; |
}; |
ImageDecodeController* image_decode_controller_; |