From 49f1f34438d3431f6d7e32847accd2ba96948a73 Mon Sep 17 00:00:00 2001 From: Mike Reed Date: Fri, 15 Sep 2017 11:37:15 -0400 Subject: use unique_ptr for stream api Bug: skia:6888 Change-Id: I3459b4913982a7cae1c0061697c82cc65ad9a2d8 Reviewed-on: https://skia-review.googlesource.com/26740 Reviewed-by: Mike Klein Commit-Queue: Mike Reed --- src/utils/SkFrontBufferedStream.cpp | 26 +++++++++++++++++--------- src/utils/win/SkDWriteFontFileStream.cpp | 14 ++++++++++++-- src/utils/win/SkDWriteFontFileStream.h | 20 ++++++++++++++++++-- 3 files changed, 47 insertions(+), 13 deletions(-) (limited to 'src/utils') diff --git a/src/utils/SkFrontBufferedStream.cpp b/src/utils/SkFrontBufferedStream.cpp index 42b86f09e3..77c484af64 100644 --- a/src/utils/SkFrontBufferedStream.cpp +++ b/src/utils/SkFrontBufferedStream.cpp @@ -11,8 +11,8 @@ class FrontBufferedStream : public SkStreamRewindable { public: - // Called by Create. - FrontBufferedStream(SkStream*, size_t bufferSize); + // Called by Make. + FrontBufferedStream(std::unique_ptr, size_t bufferSize); size_t read(void* buffer, size_t size) override; @@ -26,9 +26,15 @@ public: size_t getLength() const override { return fLength; } +#ifdef SK_SUPPORT_LEGACY_STREAM_API SkStreamRewindable* duplicate() const override { return nullptr; } +#endif private: +#ifndef SK_SUPPORT_LEGACY_STREAM_API + SkStreamRewindable* onDuplicate() const override { return nullptr; } +#endif + std::unique_ptr fStream; const bool fHasLength; const size_t fLength; @@ -61,17 +67,19 @@ private: typedef SkStream INHERITED; }; -SkStreamRewindable* SkFrontBufferedStream::Create(SkStream* stream, size_t bufferSize) { - if (nullptr == stream) { +std::unique_ptr SkFrontBufferedStream::Make(std::unique_ptr stream, + size_t bufferSize) { + if (!stream) { return nullptr; } - return new FrontBufferedStream(stream, bufferSize); + return std::unique_ptr(new FrontBufferedStream(std::move(stream), + bufferSize)); } -FrontBufferedStream::FrontBufferedStream(SkStream* stream, size_t bufferSize) - : fStream(stream) - , fHasLength(stream->hasPosition() && stream->hasLength()) - , fLength(stream->getLength() - stream->getPosition()) +FrontBufferedStream::FrontBufferedStream(std::unique_ptr stream, size_t bufferSize) + : fStream(std::move(stream)) + , fHasLength(fStream->hasPosition() && fStream->hasLength()) + , fLength(fStream->getLength() - fStream->getPosition()) , fOffset(0) , fBufferedSoFar(0) , fBufferSize(bufferSize) diff --git a/src/utils/win/SkDWriteFontFileStream.cpp b/src/utils/win/SkDWriteFontFileStream.cpp index 2bb7d0fb4e..a43e163481 100644 --- a/src/utils/win/SkDWriteFontFileStream.cpp +++ b/src/utils/win/SkDWriteFontFileStream.cpp @@ -86,7 +86,12 @@ bool SkDWriteFontFileStream::rewind() { return true; } -SkDWriteFontFileStream* SkDWriteFontFileStream::duplicate() const { +#ifdef SK_SUPPORT_LEGACY_STREAM_API +SkDWriteFontFileStream* SkDWriteFontFileStream::duplicate() const +#else +SkDWriteFontFileStream* SkDWriteFontFileStream::onDuplicate() const +#endif +{ return new SkDWriteFontFileStream(fFontFileStream.get()); } @@ -104,7 +109,12 @@ bool SkDWriteFontFileStream::move(long offset) { return seek(fPos + offset); } -SkDWriteFontFileStream* SkDWriteFontFileStream::fork() const { +#ifdef SK_SUPPORT_LEGACY_STREAM_API +SkDWriteFontFileStream* SkDWriteFontFileStream::fork() const +#else +SkDWriteFontFileStream* SkDWriteFontFileStream::onFork() const +#endif +{ std::unique_ptr that(this->duplicate()); that->seek(fPos); return that.release(); diff --git a/src/utils/win/SkDWriteFontFileStream.h b/src/utils/win/SkDWriteFontFileStream.h index 25322c5657..9b65752382 100644 --- a/src/utils/win/SkDWriteFontFileStream.h +++ b/src/utils/win/SkDWriteFontFileStream.h @@ -28,15 +28,31 @@ public: size_t read(void* buffer, size_t size) override; bool isAtEnd() const override; bool rewind() override; - SkDWriteFontFileStream* duplicate() const override; size_t getPosition() const override; bool seek(size_t position) override; bool move(long offset) override; - SkDWriteFontFileStream* fork() const override; size_t getLength() const override; const void* getMemoryBase() override; +#ifdef SK_SUPPORT_LEGACY_STREAM_API + SkDWriteFontFileStream* duplicate() const override; + SkDWriteFontFileStream* fork() const override; +#else + std::unique_ptr duplicate() const { + return std::unique_ptr(this->onDuplicate()); + } + std::unique_ptr fork() const { + return std::unique_ptr(this->onFork()); + } +#endif + + private: +#ifndef SK_SUPPORT_LEGACY_STREAM_API + SkDWriteFontFileStream* onDuplicate() const override; + SkDWriteFontFileStream* onFork() const override; +#endif + SkTScopedComPtr fFontFileStream; size_t fPos; const void* fLockedMemory; -- cgit v1.2.3