| Index: src/ports/SkFontHost_mac.cpp
|
| diff --git a/src/ports/SkFontHost_mac.cpp b/src/ports/SkFontHost_mac.cpp
|
| index 0c2e5c26281851030e53f41930f3406722310c90..7d1ef750bd5d3f74336fe7e0a14d25c942103f53 100644
|
| --- a/src/ports/SkFontHost_mac.cpp
|
| +++ b/src/ports/SkFontHost_mac.cpp
|
| @@ -28,6 +28,7 @@
|
| #include "SkFontDescriptor.h"
|
| #include "SkFontMgr.h"
|
| #include "SkGlyph.h"
|
| +#include "SkMakeUnique.h"
|
| #include "SkMaskGamma.h"
|
| #include "SkMathPriv.h"
|
| #include "SkMutex.h"
|
| @@ -511,7 +512,7 @@ public:
|
| protected:
|
| int onGetUPEM() const override;
|
| SkStreamAsset* onOpenStream(int* ttcIndex) const override;
|
| - SkFontData* onCreateFontData() const override;
|
| + std::unique_ptr<SkFontData> onMakeFontData() const override;
|
| void onGetFamilyName(SkString* familyName) const override;
|
| SkTypeface::LocalizedStrings* onCreateFamilyNameIterator() const override;
|
| int onGetTableTags(SkFontTableTag tags[]) const override;
|
| @@ -1885,16 +1886,17 @@ static bool get_variations(CTFontRef fFontRef, CFIndex* cgAxisCount,
|
|
|
| return true;
|
| }
|
| -SkFontData* SkTypeface_Mac::onCreateFontData() const {
|
| +std::unique_ptr<SkFontData> SkTypeface_Mac::onMakeFontData() const {
|
| int index;
|
| - SkAutoTDelete<SkStreamAsset> stream(this->onOpenStream(&index));
|
| + std::unique_ptr<SkStreamAsset> stream(this->onOpenStream(&index));
|
|
|
| CFIndex cgAxisCount;
|
| SkAutoSTMalloc<4, SkFixed> axisValues;
|
| if (get_variations(fFontRef, &cgAxisCount, &axisValues)) {
|
| - return new SkFontData(stream.release(), index, axisValues.get(), cgAxisCount);
|
| + return skstd::make_unique<SkFontData>(std::move(stream), index,
|
| + axisValues.get(), cgAxisCount);
|
| }
|
| - return new SkFontData(stream.release(), index, nullptr, 0);
|
| + return skstd::make_unique<SkFontData>(std::move(stream), index, nullptr, 0);
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| @@ -2367,15 +2369,16 @@ protected:
|
| }
|
|
|
| SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const override {
|
| - AutoCFRelease<CGDataProviderRef> pr(SkCreateDataProviderFromData(data));
|
| + AutoCFRelease<CGDataProviderRef> pr(SkCreateDataProviderFromData(sk_ref_sp(data)));
|
| if (nullptr == pr) {
|
| return nullptr;
|
| }
|
| return create_from_dataProvider(pr);
|
| }
|
|
|
| - SkTypeface* onCreateFromStream(SkStreamAsset* stream, int ttcIndex) const override {
|
| - AutoCFRelease<CGDataProviderRef> pr(SkCreateDataProviderFromStream(stream));
|
| + SkTypeface* onCreateFromStream(SkStreamAsset* bareStream, int ttcIndex) const override {
|
| + std::unique_ptr<SkStreamAsset> stream(bareStream);
|
| + AutoCFRelease<CGDataProviderRef> pr(SkCreateDataProviderFromStream(std::move(stream)));
|
| if (nullptr == pr) {
|
| return nullptr;
|
| }
|
| @@ -2493,8 +2496,9 @@ protected:
|
| }
|
| return dict;
|
| }
|
| - SkTypeface* onCreateFromStream(SkStreamAsset* s, const FontParameters& params) const override {
|
| - AutoCFRelease<CGDataProviderRef> provider(SkCreateDataProviderFromStream(s));
|
| + SkTypeface* onCreateFromStream(SkStreamAsset* bs, const FontParameters& params) const override {
|
| + std::unique_ptr<SkStreamAsset> s(bs);
|
| + AutoCFRelease<CGDataProviderRef> provider(SkCreateDataProviderFromStream(std::move(s)));
|
| if (nullptr == provider) {
|
| return nullptr;
|
| }
|
| @@ -2574,10 +2578,9 @@ protected:
|
| }
|
| return dict;
|
| }
|
| - SkTypeface* onCreateFromFontData(SkFontData* data) const override {
|
| - SkAutoTDelete<SkFontData> fontData(data);
|
| - SkStreamAsset* stream = fontData->detachStream();
|
| - AutoCFRelease<CGDataProviderRef> provider(SkCreateDataProviderFromStream(stream));
|
| + SkTypeface* onCreateFromFontData(std::unique_ptr<SkFontData> fontData) const override {
|
| + AutoCFRelease<CGDataProviderRef> provider(
|
| + SkCreateDataProviderFromStream(fontData->detachStream()));
|
| if (nullptr == provider) {
|
| return nullptr;
|
| }
|
| @@ -2586,7 +2589,7 @@ protected:
|
| return nullptr;
|
| }
|
|
|
| - AutoCFRelease<CFDictionaryRef> cgVariations(get_axes(cg, fontData));
|
| + AutoCFRelease<CFDictionaryRef> cgVariations(get_axes(cg, fontData.get()));
|
| // The CGFontRef returned by CGFontCreateCopyWithVariations when the passed CGFontRef was
|
| // created from a data provider does not appear to have any ownership of the underlying
|
| // data. The original CGFontRef must be kept alive until the copy will no longer be used.
|
|
|