aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/fonts
diff options
context:
space:
mode:
Diffstat (limited to 'src/fonts')
-rw-r--r--src/fonts/SkGScalerContext.cpp11
-rw-r--r--src/fonts/SkGScalerContext.h9
-rw-r--r--src/fonts/SkRandomScalerContext.cpp8
-rw-r--r--src/fonts/SkRandomScalerContext.h11
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