diff options
author | reed <reed@google.com> | 2016-03-11 13:02:28 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-11 13:02:28 -0800 |
commit | fde05114e6c4107b36e1aa571c64d31def40f613 (patch) | |
tree | bb3997b32141ea4984255e833d03cb1caed76904 /src/core/SkStream.cpp | |
parent | 51c8cfc64c7286ad8a392064cd376bb9974c7bc1 (diff) |
Make sp variants for SkData
Review URL: https://codereview.chromium.org/1779263003
Diffstat (limited to 'src/core/SkStream.cpp')
-rw-r--r-- | src/core/SkStream.cpp | 75 |
1 files changed, 34 insertions, 41 deletions
diff --git a/src/core/SkStream.cpp b/src/core/SkStream.cpp index 9529308e86..b6d0a2bb33 100644 --- a/src/core/SkStream.cpp +++ b/src/core/SkStream.cpp @@ -245,8 +245,8 @@ SkStreamAsset* SkFILEStream::duplicate() const { } } - fData.reset(SkData::NewFromFILE(fFILE)); - if (nullptr == fData.get()) { + fData = SkData::MakeFromFILE(fFILE); + if (nullptr == fData) { return nullptr; } return new SkMemoryStream(fData); @@ -283,21 +283,21 @@ const void* SkFILEStream::getMemoryBase() { /////////////////////////////////////////////////////////////////////////////// -static SkData* newFromParams(const void* src, size_t size, bool copyData) { +static sk_sp<SkData> newFromParams(const void* src, size_t size, bool copyData) { if (copyData) { - return SkData::NewWithCopy(src, size); + return SkData::MakeWithCopy(src, size); } else { - return SkData::NewWithoutCopy(src, size); + return SkData::MakeWithoutCopy(src, size); } } SkMemoryStream::SkMemoryStream() { - fData = SkData::NewEmpty(); + fData = SkData::MakeEmpty(); fOffset = 0; } SkMemoryStream::SkMemoryStream(size_t size) { - fData = SkData::NewUninitialized(size); + fData = SkData::MakeUninitialized(size); fOffset = 0; } @@ -306,44 +306,41 @@ SkMemoryStream::SkMemoryStream(const void* src, size_t size, bool copyData) { fOffset = 0; } +SkMemoryStream::SkMemoryStream(sk_sp<SkData> data) : fData(std::move(data)) { + if (nullptr == fData) { + fData = SkData::MakeEmpty(); + } + fOffset = 0; +} + SkMemoryStream::SkMemoryStream(SkData* data) { if (nullptr == data) { - fData = SkData::NewEmpty(); + fData = SkData::MakeEmpty(); } else { - fData = data; - fData->ref(); + fData = sk_ref_sp(data); } fOffset = 0; } -SkMemoryStream::~SkMemoryStream() { - fData->unref(); -} - void SkMemoryStream::setMemoryOwned(const void* src, size_t size) { - fData->unref(); - fData = SkData::NewFromMalloc(src, size); + fData = SkData::MakeFromMalloc(src, size); fOffset = 0; } void SkMemoryStream::setMemory(const void* src, size_t size, bool copyData) { - fData->unref(); fData = newFromParams(src, size, copyData); fOffset = 0; } SkData* SkMemoryStream::copyToData() const { - fData->ref(); - return fData; + return SkSafeRef(fData.get()); } SkData* SkMemoryStream::setData(SkData* data) { - fData->unref(); if (nullptr == data) { - fData = SkData::NewEmpty(); + fData = SkData::MakeEmpty(); } else { - fData = data; - fData->ref(); + fData = sk_ref_sp(data); } fOffset = 0; return data; @@ -519,9 +516,8 @@ struct SkDynamicMemoryWStream::Block { }; SkDynamicMemoryWStream::SkDynamicMemoryWStream() - : fHead(nullptr), fTail(nullptr), fBytesWritten(0), fCopy(nullptr) -{ -} + : fHead(nullptr), fTail(nullptr), fBytesWritten(0) +{} SkDynamicMemoryWStream::~SkDynamicMemoryWStream() { @@ -655,19 +651,16 @@ void SkDynamicMemoryWStream::padToAlign4() SkData* SkDynamicMemoryWStream::copyToData() const { if (nullptr == fCopy) { - SkData* data = SkData::NewUninitialized(fBytesWritten); + auto data = SkData::MakeUninitialized(fBytesWritten); // be sure to call copyTo() before we assign to fCopy this->copyTo(data->writable_data()); - fCopy = data; + fCopy = std::move(data); } - return SkRef(fCopy); + return SkRef(fCopy.get()); } void SkDynamicMemoryWStream::invalidateCopy() { - if (fCopy) { - fCopy->unref(); - fCopy = nullptr; - } + fCopy = nullptr; } class SkBlockMemoryRefCnt : public SkRefCnt { @@ -854,21 +847,21 @@ bool SkDebugWStream::write(const void* buffer, size_t size) /////////////////////////////////////////////////////////////////////////////// -static SkData* mmap_filename(const char path[]) { +static sk_sp<SkData> mmap_filename(const char path[]) { FILE* file = sk_fopen(path, kRead_SkFILE_Flag); if (nullptr == file) { return nullptr; } - SkData* data = SkData::NewFromFILE(file); + auto data = SkData::MakeFromFILE(file); sk_fclose(file); return data; } SkStreamAsset* SkStream::NewFromFile(const char path[]) { - SkAutoTUnref<SkData> data(mmap_filename(path)); - if (data.get()) { - return new SkMemoryStream(data.get()); + auto data(mmap_filename(path)); + if (data) { + return new SkMemoryStream(std::move(data)); } // If we get here, then our attempt at using mmap failed, so try normal @@ -882,11 +875,11 @@ SkStreamAsset* SkStream::NewFromFile(const char path[]) { } // Declared in SkStreamPriv.h: -SkData* SkCopyStreamToData(SkStream* stream) { +sk_sp<SkData> SkCopyStreamToData(SkStream* stream) { SkASSERT(stream != nullptr); if (stream->hasLength()) { - return SkData::NewFromStream(stream, stream->getLength()); + return SkData::MakeFromStream(stream, stream->getLength()); } SkDynamicMemoryWStream tempStream; @@ -896,7 +889,7 @@ SkData* SkCopyStreamToData(SkStream* stream) { size_t bytesRead = stream->read(buffer, bufferSize); tempStream.write(buffer, bytesRead); } while (!stream->isAtEnd()); - return tempStream.copyToData(); + return sk_sp<SkData>(tempStream.copyToData()); } bool SkStreamCopy(SkWStream* out, SkStream* input) { |