aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkSpecialSurface.cpp
diff options
context:
space:
mode:
authorGravatar Hal Canary <halcanary@google.com>2016-12-12 13:48:12 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-12-12 20:18:50 +0000
commit1b3387b5cfef150c3237c6a8700b2d6f3730e4ce (patch)
tree3b0e9690f1346e37631aa687650390d49f5f3c46 /src/core/SkSpecialSurface.cpp
parent8615fe59fcc0246a8b0c11b37b3e75f82c9933dd (diff)
SkBitmap::setPixelRef(): less reference churn
BUG=skia: Change-Id: I9657e4af5fcc808f9175ff336155374ccc77999d Reviewed-on: https://skia-review.googlesource.com/5461 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Hal Canary <halcanary@google.com>
Diffstat (limited to 'src/core/SkSpecialSurface.cpp')
-rw-r--r--src/core/SkSpecialSurface.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/core/SkSpecialSurface.cpp b/src/core/SkSpecialSurface.cpp
index 956300cb3e..e6206a0a19 100644
--- a/src/core/SkSpecialSurface.cpp
+++ b/src/core/SkSpecialSurface.cpp
@@ -63,14 +63,14 @@ sk_sp<SkSpecialImage> SkSpecialSurface::makeImageSnapshot() {
class SkSpecialSurface_Raster : public SkSpecialSurface_Base {
public:
- SkSpecialSurface_Raster(SkPixelRef* pr,
+ SkSpecialSurface_Raster(sk_sp<SkPixelRef> pr,
const SkIRect& subset,
const SkSurfaceProps* props)
: INHERITED(subset, props) {
const SkImageInfo& info = pr->info();
fBitmap.setInfo(info, info.minRowBytes());
- fBitmap.setPixelRef(pr);
+ fBitmap.setPixelRef(std::move(pr), 0, 0);
fCanvas.reset(new SkCanvas(fBitmap, this->props()));
fCanvas->clipRect(SkRect::Make(subset));
@@ -93,7 +93,7 @@ private:
sk_sp<SkSpecialSurface> SkSpecialSurface::MakeFromBitmap(const SkIRect& subset, SkBitmap& bm,
const SkSurfaceProps* props) {
- return sk_make_sp<SkSpecialSurface_Raster>(bm.pixelRef(), subset, props);
+ return sk_make_sp<SkSpecialSurface_Raster>(sk_ref_sp(bm.pixelRef()), subset, props);
}
sk_sp<SkSpecialSurface> SkSpecialSurface::MakeRaster(const SkImageInfo& info,
@@ -105,7 +105,7 @@ sk_sp<SkSpecialSurface> SkSpecialSurface::MakeRaster(const SkImageInfo& info,
const SkIRect subset = SkIRect::MakeWH(pr->info().width(), pr->info().height());
- return sk_make_sp<SkSpecialSurface_Raster>(pr.get(), subset, props);
+ return sk_make_sp<SkSpecialSurface_Raster>(std::move(pr), subset, props);
}
#if SK_SUPPORT_GPU