diff options
author | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-05 01:00:54 +0000 |
---|---|---|
committer | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-05 01:00:54 +0000 |
commit | 3699ae5a17c4b0b68842a673550d86cdc7961728 (patch) | |
tree | cf60fc865bcbdf60e47ca37b43fa7cfd5898f01f /ui/gfx/canvas.cc | |
parent | f775d10814adf1320c8bf9de8279d473c254dd9e (diff) | |
download | chromium_src-3699ae5a17c4b0b68842a673550d86cdc7961728.zip chromium_src-3699ae5a17c4b0b68842a673550d86cdc7961728.tar.gz chromium_src-3699ae5a17c4b0b68842a673550d86cdc7961728.tar.bz2 |
ui: Use skia::RefPtr<T> for implicit safe reference counting.
R=sky
BUG=163454
Depends on: https://codereview.chromium.org/11418217/
NOTRY=true
Review URL: https://chromiumcodereview.appspot.com/11299262
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171107 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/gfx/canvas.cc')
-rw-r--r-- | ui/gfx/canvas.cc | 59 |
1 files changed, 30 insertions, 29 deletions
diff --git a/ui/gfx/canvas.cc b/ui/gfx/canvas.cc index 831f4fc..4b4a0f4 100644 --- a/ui/gfx/canvas.cc +++ b/ui/gfx/canvas.cc @@ -27,13 +27,12 @@ Canvas::Canvas(const gfx::Size& size, ui::ScaleFactor scale_factor, bool is_opaque) : scale_factor_(scale_factor), - owned_canvas_(NULL), canvas_(NULL) { gfx::Size pixel_size = gfx::ToFlooredSize( gfx::ScaleSize(size, ui::GetScaleFactorScale(scale_factor))); - owned_canvas_.reset(skia::CreatePlatformCanvas(pixel_size.width(), - pixel_size.height(), - is_opaque)); + owned_canvas_ = skia::AdoptRef(skia::CreatePlatformCanvas(pixel_size.width(), + pixel_size.height(), + is_opaque)); canvas_ = owned_canvas_.get(); #if defined(OS_WIN) || defined(OS_MACOSX) // skia::PlatformCanvas instances are initialized to 0 by Cairo on Linux, but @@ -48,9 +47,10 @@ Canvas::Canvas(const gfx::Size& size, Canvas::Canvas(const gfx::ImageSkiaRep& image_rep, bool is_opaque) : scale_factor_(image_rep.scale_factor()), - owned_canvas_(skia::CreatePlatformCanvas(image_rep.pixel_width(), - image_rep.pixel_height(), - is_opaque)), + owned_canvas_(skia::AdoptRef( + skia::CreatePlatformCanvas(image_rep.pixel_width(), + image_rep.pixel_height(), + is_opaque))), canvas_(owned_canvas_.get()) { SkScalar scale = SkFloatToScalar(ui::GetScaleFactorScale(scale_factor_)); canvas_->scale(scale, scale); @@ -59,7 +59,7 @@ Canvas::Canvas(const gfx::ImageSkiaRep& image_rep, bool is_opaque) Canvas::Canvas() : scale_factor_(ui::SCALE_FACTOR_100P), - owned_canvas_(skia::CreatePlatformCanvas(0, 0, false)), + owned_canvas_(skia::AdoptRef(skia::CreatePlatformCanvas(0, 0, false))), canvas_(owned_canvas_.get()) { } @@ -78,9 +78,9 @@ void Canvas::RecreateBackingCanvas(const gfx::Size& size, scale_factor_ = scale_factor; gfx::Size pixel_size = gfx::ToFlooredSize( gfx::ScaleSize(size, ui::GetScaleFactorScale(scale_factor))); - owned_canvas_.reset(skia::CreatePlatformCanvas(pixel_size.width(), - pixel_size.height(), - is_opaque)); + owned_canvas_ = skia::AdoptRef(skia::CreatePlatformCanvas(pixel_size.width(), + pixel_size.height(), + is_opaque)); canvas_ = owned_canvas_.get(); SkScalar scale = SkFloatToScalar(ui::GetScaleFactorScale(scale_factor_)); canvas_->scale(scale, scale); @@ -140,14 +140,14 @@ void Canvas::DrawDashedRect(const gfx::Rect& rect, SkColor color) { // Make a shader for the bitmap with an origin of the box we'll draw. This // shader is refcounted and will have an initial refcount of 1. - SkShader* shader = SkShader::CreateBitmapShader( - *dots, SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode); + skia::RefPtr<SkShader> shader = skia::AdoptRef( + SkShader::CreateBitmapShader( + *dots, SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode)); // Assign the shader to the paint & release our reference. The paint will // now own the shader and the shader will be destroyed when the paint goes // out of scope. SkPaint paint; - paint.setShader(shader); - shader->unref(); + paint.setShader(shader.get()); DrawRect(gfx::Rect(rect.x(), rect.y(), rect.width(), 1), paint); DrawRect(gfx::Rect(rect.x(), rect.y() + rect.height() - 1, rect.width(), 1), @@ -373,16 +373,16 @@ void Canvas::DrawImageInt(const gfx::ImageSkia& image, shader_scale.preTranslate(SkIntToScalar(-src_x), SkIntToScalar(-src_y)); shader_scale.postTranslate(SkIntToScalar(dest_x), SkIntToScalar(dest_y)); - SkShader* shader = gfx::CreateImageRepShader(image_rep, - SkShader::kRepeat_TileMode, - shader_scale); + skia::RefPtr<SkShader> shader = gfx::CreateImageRepShader( + image_rep, + SkShader::kRepeat_TileMode, + shader_scale); // Set up our paint to use the shader & release our reference (now just owned // by the paint). SkPaint p(paint); p.setFilterBitmap(filter); - p.setShader(shader); - shader->unref(); + p.setShader(shader.get()); // The rect will be filled by the bitmap. canvas_->drawRect(dest_rect, p); @@ -399,12 +399,13 @@ void Canvas::DrawImageInPath(const gfx::ImageSkia& image, SkMatrix matrix; matrix.setTranslate(SkIntToScalar(x), SkIntToScalar(y)); - SkShader* shader = gfx::CreateImageRepShader(image_rep, - SkShader::kRepeat_TileMode, matrix); + skia::RefPtr<SkShader> shader = gfx::CreateImageRepShader( + image_rep, + SkShader::kRepeat_TileMode, + matrix); SkPaint p(paint); - p.setShader(shader); - shader->unref(); + p.setShader(shader.get()); canvas_->drawPath(path, p); } @@ -465,14 +466,14 @@ void Canvas::TileImageInt(const gfx::ImageSkia& image, shader_scale.preTranslate(SkIntToScalar(-src_x), SkIntToScalar(-src_y)); shader_scale.postTranslate(SkIntToScalar(dest_x), SkIntToScalar(dest_y)); - SkShader* shader = gfx::CreateImageRepShader(image_rep, - SkShader::kRepeat_TileMode, - shader_scale); + skia::RefPtr<SkShader> shader = gfx::CreateImageRepShader( + image_rep, + SkShader::kRepeat_TileMode, + shader_scale); SkPaint paint; - paint.setShader(shader); + paint.setShader(shader.get()); paint.setXfermodeMode(SkXfermode::kSrcOver_Mode); - shader->unref(); SkRect dest_rect = { SkIntToScalar(dest_x), SkIntToScalar(dest_y), |