diff options
author | 2016-11-10 21:25:30 +0000 | |
---|---|---|
committer | 2016-11-10 21:25:44 +0000 | |
commit | b613c266df48cf45296ecc23d1bd7098c84bb7ba (patch) | |
tree | 50f7d84a4238918bf5869ee760ed78332b2db946 /src/image | |
parent | fac8db2df8b5cf6fd62189315bad0726d8e51f6d (diff) |
Revert "Change SkCanvas to *not* inherit from SkRefCnt"
This reverts commit 824075071885b6b741c141cbe2134d8345d34589.
Reason for revert: Breaking WebView (chromium:663959)
Original change's description:
> Change SkCanvas to *not* inherit from SkRefCnt
>
> Definitely tricky for classes like SkNWayCanvas, where the caller (today)
> need not pay attention to ownership of the canvases it gave the NWay
> (after this CL, the caller *must* managed ownership)
>
> BUG=skia:
>
> GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=4441
>
> DOCS_PREVIEW= https://skia.org/?cl=4441
>
> Change-Id: Ib1ac07a3cdf0686d78e7aaa4735d45cc90bea081
> Reviewed-on: https://skia-review.googlesource.com/4441
> Commit-Queue: Mike Reed <reed@google.com>
> Reviewed-by: Florin Malita <fmalita@chromium.org>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
>
TBR=djsollen@google.com,mtklein@google.com,halcanary@google.com,robertphillips@google.com,fmalita@chromium.org,fmalita@google.com,reed@google.com,reviews@skia.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Change-Id: I5e3b3e876b7d2c09833cf841801321033b6b968b
Reviewed-on: https://skia-review.googlesource.com/4687
Commit-Queue: Heather Miller <hcm@google.com>
Reviewed-by: Heather Miller <hcm@google.com>
Diffstat (limited to 'src/image')
-rw-r--r-- | src/image/SkSurface.cpp | 3 | ||||
-rw-r--r-- | src/image/SkSurface_Base.h | 8 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/image/SkSurface.cpp b/src/image/SkSurface.cpp index 3d6670f169..38bab9e32f 100644 --- a/src/image/SkSurface.cpp +++ b/src/image/SkSurface.cpp @@ -58,12 +58,14 @@ SkSurfaceProps::SkSurfaceProps(const SkSurfaceProps& other) SkSurface_Base::SkSurface_Base(int width, int height, const SkSurfaceProps* props) : INHERITED(width, height, props) { + fCachedCanvas = nullptr; fCachedImage = nullptr; } SkSurface_Base::SkSurface_Base(const SkImageInfo& info, const SkSurfaceProps* props) : INHERITED(info, props) { + fCachedCanvas = nullptr; fCachedImage = nullptr; } @@ -74,6 +76,7 @@ SkSurface_Base::~SkSurface_Base() { } SkSafeUnref(fCachedImage); + SkSafeUnref(fCachedCanvas); } void SkSurface_Base::onDraw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) { diff --git a/src/image/SkSurface_Base.h b/src/image/SkSurface_Base.h index a8c1d8f0a4..8351bb87e6 100644 --- a/src/image/SkSurface_Base.h +++ b/src/image/SkSurface_Base.h @@ -89,8 +89,8 @@ public: uint32_t newGenerationID(); private: - std::unique_ptr<SkCanvas> fCachedCanvas; - SkImage* fCachedImage; + SkCanvas* fCachedCanvas; + SkImage* fCachedImage; void aboutToDraw(ContentChangeMode mode); @@ -106,12 +106,12 @@ private: SkCanvas* SkSurface_Base::getCachedCanvas() { if (nullptr == fCachedCanvas) { - fCachedCanvas = std::unique_ptr<SkCanvas>(this->onNewCanvas()); + fCachedCanvas = this->onNewCanvas(); if (fCachedCanvas) { fCachedCanvas->setSurfaceBase(this); } } - return fCachedCanvas.get(); + return fCachedCanvas; } sk_sp<SkImage> SkSurface_Base::refCachedImage(SkBudgeted budgeted, ForceUnique unique) { |