| Index: ui/gfx/canvas.cc
|
| diff --git a/ui/gfx/canvas.cc b/ui/gfx/canvas.cc
|
| index 831f4fc4bf47e9e23a22de519336c43beb1871f7..4b4a0f47e3bdc7a3b8a49b00cc85facf19bebb89 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),
|
|
|