Index: src/ports/SkFontHost_FreeType.cpp |
diff --git a/src/ports/SkFontHost_FreeType.cpp b/src/ports/SkFontHost_FreeType.cpp |
index 71ce865f080c78698f5d61c292ffd4c4aa87fe63..84a74af469b35b81f01d9fb168982065f478092b 100644 |
--- a/src/ports/SkFontHost_FreeType.cpp |
+++ b/src/ports/SkFontHost_FreeType.cpp |
@@ -234,11 +234,12 @@ |
SkFaceRec* fNext; |
FT_Face fFace; |
FT_StreamRec fFTStream; |
- std::unique_ptr<SkStreamAsset> fSkStream; |
+ SkAutoTDelete<SkStreamAsset> fSkStream; |
uint32_t fRefCnt; |
uint32_t fFontID; |
- SkFaceRec(std::unique_ptr<SkStreamAsset> stream, uint32_t fontID); |
+ // assumes ownership of the stream, will delete when its done |
+ SkFaceRec(SkStreamAsset* strm, uint32_t fontID); |
}; |
extern "C" { |
@@ -261,12 +262,12 @@ |
static void sk_ft_stream_close(FT_Stream) {} |
} |
-SkFaceRec::SkFaceRec(std::unique_ptr<SkStreamAsset> stream, uint32_t fontID) |
- : fNext(nullptr), fSkStream(std::move(stream)), fRefCnt(1), fFontID(fontID) |
+SkFaceRec::SkFaceRec(SkStreamAsset* stream, uint32_t fontID) |
+ : fNext(nullptr), fSkStream(stream), fRefCnt(1), fFontID(fontID) |
{ |
sk_bzero(&fFTStream, sizeof(fFTStream)); |
fFTStream.size = fSkStream->getLength(); |
- fFTStream.descriptor.pointer = fSkStream.get(); |
+ fFTStream.descriptor.pointer = fSkStream; |
fFTStream.read = sk_ft_stream_io; |
fFTStream.close = sk_ft_stream_close; |
} |
@@ -318,11 +319,12 @@ |
rec = rec->fNext; |
} |
- std::unique_ptr<SkFontData> data = typeface->makeFontData(); |
+ SkAutoTDelete<SkFontData> data(typeface->createFontData()); |
if (nullptr == data || !data->hasStream()) { |
return nullptr; |
} |
+ // this passes ownership of stream to the rec |
rec = new SkFaceRec(data->detachStream(), fontID); |
FT_Open_Args args; |
@@ -1562,7 +1564,7 @@ |
} |
} |
-FT_Face SkTypeface_FreeType::Scanner::openFace(SkStreamAsset* stream, int ttcIndex, |
+FT_Face SkTypeface_FreeType::Scanner::openFace(SkStream* stream, int ttcIndex, |
FT_Stream ftStream) const |
{ |
if (fLibrary == nullptr) { |
@@ -1596,7 +1598,7 @@ |
return face; |
} |
-bool SkTypeface_FreeType::Scanner::recognizedFont(SkStreamAsset* stream, int* numFaces) const { |
+bool SkTypeface_FreeType::Scanner::recognizedFont(SkStream* stream, int* numFaces) const { |
SkAutoMutexAcquire libraryLock(fLibraryMutex); |
FT_StreamRec streamRec; |
@@ -1613,7 +1615,7 @@ |
#include "SkTSearch.h" |
bool SkTypeface_FreeType::Scanner::scanFont( |
- SkStreamAsset* stream, int ttcIndex, |
+ SkStream* stream, int ttcIndex, |
SkString* name, SkFontStyle* style, bool* isFixedPitch, AxisDefinitions* axes) const |
{ |
SkAutoMutexAcquire libraryLock(fLibraryMutex); |