Index: ui/gfx/canvas.h |
diff --git a/ui/gfx/canvas.h b/ui/gfx/canvas.h |
index ec85eb5374681b91ab0f1fbcfd71c1fb0ab8b0b3..521a1567f4a9835c2eb90992823fe550004a4941 100644 |
--- a/ui/gfx/canvas.h |
+++ b/ui/gfx/canvas.h |
@@ -89,7 +89,9 @@ class GFX_EXPORT Canvas { |
// Creates a Canvas backed by an |sk_canvas| with |image_scale_|. |
// |sk_canvas| is assumed to be already scaled based on |image_scale| |
// so no additional scaling is applied. |
- Canvas(sk_sp<SkCanvas> sk_canvas, float image_scale); |
+ // Note: the caller must ensure that sk_canvas outlives this object, or until |
+ // RecreateBackingCanvas is called. |
+ Canvas(SkCanvas* sk_canvas, float image_scale); |
virtual ~Canvas(); |
@@ -481,7 +483,7 @@ class GFX_EXPORT Canvas { |
const Rect& display_rect, |
int flags); |
- SkCanvas* sk_canvas() { return canvas_.get(); } |
+ SkCanvas* sk_canvas() { return canvas_; } |
float image_scale() const { return image_scale_; } |
private: |
@@ -509,7 +511,12 @@ class GFX_EXPORT Canvas { |
// Canvas::Scale() does not affect |image_scale_|. |
float image_scale_; |
- sk_sp<SkCanvas> canvas_; |
+ // canvas_ is our active canvas object. Sometimes we are also the owner, |
+ // in which case canvas_owner_ will be set. Other times we are just |
+ // borrowing someone else's canvas, in which case canvas_ will point there |
+ // but canvas_owner_ will be null. |
+ std::unique_ptr<SkCanvas> canvas_owner_; |
+ SkCanvas* canvas_; |
DISALLOW_COPY_AND_ASSIGN(Canvas); |
}; |