diff options
Diffstat (limited to 'src/fonts')
-rw-r--r-- | src/fonts/SkGScalerContext.cpp | 11 | ||||
-rw-r--r-- | src/fonts/SkGScalerContext.h | 9 | ||||
-rw-r--r-- | src/fonts/SkRandomScalerContext.cpp | 8 | ||||
-rw-r--r-- | src/fonts/SkRandomScalerContext.h | 11 |
4 files changed, 24 insertions, 15 deletions
diff --git a/src/fonts/SkGScalerContext.cpp b/src/fonts/SkGScalerContext.cpp index 1d34536cbe..0a9601bd7e 100644 --- a/src/fonts/SkGScalerContext.cpp +++ b/src/fonts/SkGScalerContext.cpp @@ -151,11 +151,14 @@ void SkGScalerContext::generateFontMetrics(SkPaint::FontMetrics* metrics) { #include "SkTypefaceCache.h" -SkGTypeface::SkGTypeface(sk_sp<SkTypeface> proxy, const SkPaint& paint) +SkGTypeface::SkGTypeface(SkTypeface* proxy, const SkPaint& paint) : SkTypeface(proxy->fontStyle(), SkTypefaceCache::NewFontID(), false) - , fProxy(std::move(proxy)) - , fPaint(paint) -{} + , fProxy(SkRef(proxy)) + , fPaint(paint) {} + +SkGTypeface::~SkGTypeface() { + fProxy->unref(); +} SkScalerContext* SkGTypeface::onCreateScalerContext(const SkScalerContextEffects& effects, const SkDescriptor* desc) const { diff --git a/src/fonts/SkGScalerContext.h b/src/fonts/SkGScalerContext.h index 3eb25a81da..69d02ddf11 100644 --- a/src/fonts/SkGScalerContext.h +++ b/src/fonts/SkGScalerContext.h @@ -13,9 +13,10 @@ class SkGTypeface : public SkTypeface { public: - SkGTypeface(sk_sp<SkTypeface> proxy, const SkPaint&); + SkGTypeface(SkTypeface* proxy, const SkPaint&); + virtual ~SkGTypeface(); - SkTypeface* proxy() const { return fProxy.get(); } + SkTypeface* proxy() const { return fProxy; } const SkPaint& paint() const { return fPaint; } protected: @@ -42,8 +43,8 @@ protected: size_t length, void* data) const override; private: - sk_sp<SkTypeface> fProxy; - SkPaint fPaint; + SkTypeface* fProxy; + SkPaint fPaint; }; #endif diff --git a/src/fonts/SkRandomScalerContext.cpp b/src/fonts/SkRandomScalerContext.cpp index 6d3718cbef..245052053e 100644 --- a/src/fonts/SkRandomScalerContext.cpp +++ b/src/fonts/SkRandomScalerContext.cpp @@ -190,12 +190,16 @@ void SkRandomScalerContext::generateFontMetrics(SkPaint::FontMetrics* metrics) { #include "SkTypefaceCache.h" -SkRandomTypeface::SkRandomTypeface(sk_sp<SkTypeface> proxy, const SkPaint& paint, bool fakeIt) +SkRandomTypeface::SkRandomTypeface(SkTypeface* proxy, const SkPaint& paint, bool fakeIt) : SkTypeface(proxy->fontStyle(), SkTypefaceCache::NewFontID(), false) - , fProxy(std::move(proxy)) + , fProxy(SkRef(proxy)) , fPaint(paint) , fFakeIt(fakeIt) {} +SkRandomTypeface::~SkRandomTypeface() { + fProxy->unref(); +} + SkScalerContext* SkRandomTypeface::onCreateScalerContext(const SkScalerContextEffects& effects, const SkDescriptor* desc) const { return new SkRandomScalerContext(const_cast<SkRandomTypeface*>(this), effects, desc, fFakeIt); diff --git a/src/fonts/SkRandomScalerContext.h b/src/fonts/SkRandomScalerContext.h index 076689d93a..0e08f4b1ae 100644 --- a/src/fonts/SkRandomScalerContext.h +++ b/src/fonts/SkRandomScalerContext.h @@ -18,9 +18,10 @@ class SkRandomTypeface : public SkTypeface { public: - SkRandomTypeface(sk_sp<SkTypeface> proxy, const SkPaint&, bool fakeit); + SkRandomTypeface(SkTypeface* proxy, const SkPaint&, bool fakeit); + virtual ~SkRandomTypeface(); - SkTypeface* proxy() const { return fProxy.get(); } + SkTypeface* proxy() const { return fProxy; } const SkPaint& paint() const { return fPaint; } protected: @@ -47,9 +48,9 @@ protected: size_t length, void* data) const override; private: - sk_sp<SkTypeface> fProxy; - SkPaint fPaint; - bool fFakeIt; + SkTypeface* fProxy; + SkPaint fPaint; + bool fFakeIt; }; #endif |