From 0babd3c61987428a5c532f65be9d98c7ac583e0d Mon Sep 17 00:00:00 2001 From: bungeman Date: Wed, 18 Feb 2015 11:01:05 -0800 Subject: Update DirectWrite streams to SkStreamAsset. SkTypefaces now deal in terms of SkStreamAsset, but the DirectWrite port was never fully converted. Review URL: https://codereview.chromium.org/940563002 --- src/ports/SkFontMgr_win_dw.cpp | 6 +++--- src/utils/win/SkDWriteFontFileStream.cpp | 13 ++++++------- src/utils/win/SkDWriteFontFileStream.h | 7 ++++--- 3 files changed, 13 insertions(+), 13 deletions(-) (limited to 'src') diff --git a/src/ports/SkFontMgr_win_dw.cpp b/src/ports/SkFontMgr_win_dw.cpp index bb1e8f572f..e5ddcac8c5 100644 --- a/src/ports/SkFontMgr_win_dw.cpp +++ b/src/ports/SkFontMgr_win_dw.cpp @@ -35,7 +35,7 @@ public: IDWriteFontFileStream** fontFileStream); // Takes ownership of stream. - static HRESULT Create(SkStream* stream, StreamFontFileLoader** streamFontFileLoader) { + static HRESULT Create(SkStreamAsset* stream, StreamFontFileLoader** streamFontFileLoader) { *streamFontFileLoader = new StreamFontFileLoader(stream); if (NULL == streamFontFileLoader) { return E_OUTOFMEMORY; @@ -43,10 +43,10 @@ public: return S_OK; } - SkAutoTDelete fStream; + SkAutoTDelete fStream; private: - StreamFontFileLoader(SkStream* stream) : fRefCount(1), fStream(stream) { } + StreamFontFileLoader(SkStreamAsset* stream) : fRefCount(1), fStream(stream) { } virtual ~StreamFontFileLoader() { } ULONG fRefCount; diff --git a/src/utils/win/SkDWriteFontFileStream.cpp b/src/utils/win/SkDWriteFontFileStream.cpp index 809ae7bd9a..a18760111c 100644 --- a/src/utils/win/SkDWriteFontFileStream.cpp +++ b/src/utils/win/SkDWriteFontFileStream.cpp @@ -133,7 +133,9 @@ const void* SkDWriteFontFileStream::getMemoryBase() { /////////////////////////////////////////////////////////////////////////////// // SkIDWriteFontFileStreamWrapper -HRESULT SkDWriteFontFileStreamWrapper::Create(SkStream* stream, SkDWriteFontFileStreamWrapper** streamFontFileStream) { +HRESULT SkDWriteFontFileStreamWrapper::Create(SkStreamAsset* stream, + SkDWriteFontFileStreamWrapper** streamFontFileStream) +{ *streamFontFileStream = new SkDWriteFontFileStreamWrapper(stream); if (NULL == streamFontFileStream) { return E_OUTOFMEMORY; @@ -141,7 +143,7 @@ HRESULT SkDWriteFontFileStreamWrapper::Create(SkStream* stream, SkDWriteFontFile return S_OK; } -SkDWriteFontFileStreamWrapper::SkDWriteFontFileStreamWrapper(SkStream* stream) +SkDWriteFontFileStreamWrapper::SkDWriteFontFileStreamWrapper(SkStreamAsset* stream) : fRefCount(1), fStream(stream) { } @@ -193,16 +195,13 @@ HRESULT STDMETHODCALLTYPE SkDWriteFontFileStreamWrapper::ReadFileFragment( *fragmentContext = NULL; } else { - //May be called from multiple threads. + // May be called from multiple threads. SkAutoMutexAcquire ama(fStreamMutex); *fragmentStart = NULL; *fragmentContext = NULL; - if (!fStream->rewind()) { - return E_FAIL; - } - if (fStream->skip(static_cast(fileOffset)) != fileOffset) { + if (!fStream->seek(static_cast(fileOffset))) { return E_FAIL; } SkAutoTMalloc streamData(static_cast(fragmentSize)); diff --git a/src/utils/win/SkDWriteFontFileStream.h b/src/utils/win/SkDWriteFontFileStream.h index f03518fe54..ba16f704a3 100644 --- a/src/utils/win/SkDWriteFontFileStream.h +++ b/src/utils/win/SkDWriteFontFileStream.h @@ -65,14 +65,15 @@ public: virtual HRESULT STDMETHODCALLTYPE GetFileSize(UINT64* fileSize); virtual HRESULT STDMETHODCALLTYPE GetLastWriteTime(UINT64* lastWriteTime); - static HRESULT Create(SkStream* stream, SkDWriteFontFileStreamWrapper** streamFontFileStream); + static HRESULT Create(SkStreamAsset* stream, + SkDWriteFontFileStreamWrapper** streamFontFileStream); private: - explicit SkDWriteFontFileStreamWrapper(SkStream* stream); + explicit SkDWriteFontFileStreamWrapper(SkStreamAsset* stream); virtual ~SkDWriteFontFileStreamWrapper() { } ULONG fRefCount; - SkAutoTDelete fStream; + SkAutoTDelete fStream; SkMutex fStreamMutex; }; #endif -- cgit v1.2.3