diff options
author | reed <reed@google.com> | 2016-09-12 12:01:44 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-09-12 12:01:44 -0700 |
commit | 42943c8aa9c611c18ad0f1a30a27669f3d82239c (patch) | |
tree | deff0bbc59dd92559191c188d73f97b4f9c580aa /src | |
parent | 09524ae42998ece3a8e7973064ab286646511b31 (diff) |
change SkStreams to work with sk_sp<SkData> instead of SkData*
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2333713002
Review-Url: https://codereview.chromium.org/2333713002
Diffstat (limited to 'src')
-rw-r--r-- | src/android/SkBitmapRegionDecoder.cpp | 2 | ||||
-rw-r--r-- | src/codec/SkAndroidCodec.cpp | 2 | ||||
-rw-r--r-- | src/codec/SkCodec.cpp | 2 | ||||
-rw-r--r-- | src/codec/SkCodecImageGenerator.cpp | 6 | ||||
-rw-r--r-- | src/codec/SkCodecImageGenerator.h | 11 | ||||
-rw-r--r-- | src/core/SkStream.cpp | 23 | ||||
-rw-r--r-- | src/images/SkImageEncoder.cpp | 2 | ||||
-rw-r--r-- | src/pathops/SkPathOpsOp.cpp | 2 | ||||
-rw-r--r-- | src/ports/SkFontHost_win.cpp | 2 | ||||
-rw-r--r-- | src/ports/SkFontMgr_android.cpp | 2 | ||||
-rw-r--r-- | src/ports/SkFontMgr_custom.cpp | 2 | ||||
-rw-r--r-- | src/ports/SkFontMgr_fontconfig.cpp | 2 | ||||
-rw-r--r-- | src/ports/SkFontMgr_win_dw.cpp | 2 | ||||
-rw-r--r-- | src/ports/SkImageGeneratorWIC.cpp | 2 | ||||
-rw-r--r-- | src/xps/SkXPSDevice.cpp | 2 |
15 files changed, 33 insertions, 31 deletions
diff --git a/src/android/SkBitmapRegionDecoder.cpp b/src/android/SkBitmapRegionDecoder.cpp index 324d1be4a4..6dd48c5f88 100644 --- a/src/android/SkBitmapRegionDecoder.cpp +++ b/src/android/SkBitmapRegionDecoder.cpp @@ -12,7 +12,7 @@ #include "SkCodecPriv.h" SkBitmapRegionDecoder* SkBitmapRegionDecoder::Create( - SkData* data, Strategy strategy) { + sk_sp<SkData> data, Strategy strategy) { return SkBitmapRegionDecoder::Create(new SkMemoryStream(data), strategy); } diff --git a/src/codec/SkAndroidCodec.cpp b/src/codec/SkAndroidCodec.cpp index db36564232..23242433bf 100644 --- a/src/codec/SkAndroidCodec.cpp +++ b/src/codec/SkAndroidCodec.cpp @@ -55,7 +55,7 @@ SkAndroidCodec* SkAndroidCodec::NewFromStream(SkStream* stream, SkPngChunkReader } } -SkAndroidCodec* SkAndroidCodec::NewFromData(SkData* data, SkPngChunkReader* chunkReader) { +SkAndroidCodec* SkAndroidCodec::NewFromData(sk_sp<SkData> data, SkPngChunkReader* chunkReader) { if (!data) { return nullptr; } diff --git a/src/codec/SkCodec.cpp b/src/codec/SkCodec.cpp index 2372f4ce5b..b076954adc 100644 --- a/src/codec/SkCodec.cpp +++ b/src/codec/SkCodec.cpp @@ -107,7 +107,7 @@ SkCodec* SkCodec::NewFromStream(SkStream* stream, return nullptr; } -SkCodec* SkCodec::NewFromData(SkData* data, SkPngChunkReader* reader) { +SkCodec* SkCodec::NewFromData(sk_sp<SkData> data, SkPngChunkReader* reader) { if (!data) { return nullptr; } diff --git a/src/codec/SkCodecImageGenerator.cpp b/src/codec/SkCodecImageGenerator.cpp index 1bae1df856..8108f0de44 100644 --- a/src/codec/SkCodecImageGenerator.cpp +++ b/src/codec/SkCodecImageGenerator.cpp @@ -7,7 +7,7 @@ #include "SkCodecImageGenerator.h" -SkImageGenerator* SkCodecImageGenerator::NewFromEncodedCodec(SkData* data) { +SkImageGenerator* SkCodecImageGenerator::NewFromEncodedCodec(sk_sp<SkData> data) { SkCodec* codec = SkCodec::NewFromData(data); if (nullptr == codec) { return nullptr; @@ -24,10 +24,10 @@ static SkImageInfo make_premul(const SkImageInfo& info) { return info; } -SkCodecImageGenerator::SkCodecImageGenerator(SkCodec* codec, SkData* data) +SkCodecImageGenerator::SkCodecImageGenerator(SkCodec* codec, sk_sp<SkData> data) : INHERITED(make_premul(codec->getInfo())) , fCodec(codec) - , fData(SkRef(data)) + , fData(std::move(data)) {} SkData* SkCodecImageGenerator::onRefEncodedData(SK_REFENCODEDDATA_CTXPARAM) { diff --git a/src/codec/SkCodecImageGenerator.h b/src/codec/SkCodecImageGenerator.h index b12564329d..22a39aaaa9 100644 --- a/src/codec/SkCodecImageGenerator.h +++ b/src/codec/SkCodecImageGenerator.h @@ -14,11 +14,11 @@ public: /* * If this data represents an encoded image that we know how to decode, * return an SkCodecImageGenerator. Otherwise return nullptr. - * - * Refs the data if an image generator can be returned. Otherwise does - * not affect the data. */ - static SkImageGenerator* NewFromEncodedCodec(SkData* data); + static SkImageGenerator* NewFromEncodedCodec(sk_sp<SkData>); + static SkImageGenerator* NewFromEncodedCodec(SkData* data) { + return NewFromEncodedCodec(sk_ref_sp(data)); + } protected: SkData* onRefEncodedData(SK_REFENCODEDDATA_CTXPARAM) override; @@ -33,9 +33,8 @@ protected: private: /* * Takes ownership of codec - * Refs the data */ - SkCodecImageGenerator(SkCodec* codec, SkData* data); + SkCodecImageGenerator(SkCodec* codec, sk_sp<SkData>); SkAutoTDelete<SkCodec> fCodec; sk_sp<SkData> fData; diff --git a/src/core/SkStream.cpp b/src/core/SkStream.cpp index e2b3e6454c..48eb92cae5 100644 --- a/src/core/SkStream.cpp +++ b/src/core/SkStream.cpp @@ -306,6 +306,7 @@ SkMemoryStream::SkMemoryStream(sk_sp<SkData> data) : fData(std::move(data)) { fOffset = 0; } +#ifdef SK_SUPPORT_LEGACY_STREAM_DATA SkMemoryStream::SkMemoryStream(SkData* data) { if (nullptr == data) { fData = SkData::MakeEmpty(); @@ -314,6 +315,7 @@ SkMemoryStream::SkMemoryStream(SkData* data) { } fOffset = 0; } +#endif void SkMemoryStream::setMemoryOwned(const void* src, size_t size) { fData = SkData::MakeFromMalloc(src, size); @@ -325,18 +327,13 @@ void SkMemoryStream::setMemory(const void* src, size_t size, bool copyData) { fOffset = 0; } -SkData* SkMemoryStream::copyToData() const { - return SkSafeRef(fData.get()); -} - -SkData* SkMemoryStream::setData(SkData* data) { +void SkMemoryStream::setData(sk_sp<SkData> data) { if (nullptr == data) { fData = SkData::MakeEmpty(); } else { - fData = sk_ref_sp(data); + fData = data; } fOffset = 0; - return data; } void SkMemoryStream::skipToAlign4() { @@ -642,14 +639,20 @@ void SkDynamicMemoryWStream::padToAlign4() write(&zero, padBytes); } -SkData* SkDynamicMemoryWStream::copyToData() const { +sk_sp<SkData> SkDynamicMemoryWStream::snapshotAsData() const { if (nullptr == fCopy) { auto data = SkData::MakeUninitialized(fBytesWritten); // be sure to call copyTo() before we assign to fCopy this->copyTo(data->writable_data()); fCopy = std::move(data); } - return SkRef(fCopy.get()); + return fCopy; +} + +sk_sp<SkData> SkDynamicMemoryWStream::detachAsData() { + sk_sp<SkData> data = this->snapshotAsData(); + this->reset(); + return data; } void SkDynamicMemoryWStream::invalidateCopy() { @@ -882,7 +885,7 @@ sk_sp<SkData> SkCopyStreamToData(SkStream* stream) { size_t bytesRead = stream->read(buffer, bufferSize); tempStream.write(buffer, bytesRead); } while (!stream->isAtEnd()); - return sk_sp<SkData>(tempStream.copyToData()); + return tempStream.detachAsData(); } bool SkStreamCopy(SkWStream* out, SkStream* input) { diff --git a/src/images/SkImageEncoder.cpp b/src/images/SkImageEncoder.cpp index 22bbc57c2f..023885f459 100644 --- a/src/images/SkImageEncoder.cpp +++ b/src/images/SkImageEncoder.cpp @@ -31,7 +31,7 @@ SkData* SkImageEncoder::encodeData(const SkBitmap& bm, int quality) { SkDynamicMemoryWStream stream; quality = SkMin32(100, SkMax32(0, quality)); if (this->onEncode(&stream, bm, quality)) { - return stream.copyToData(); + return stream.detachAsData().release(); } return nullptr; } diff --git a/src/pathops/SkPathOpsOp.cpp b/src/pathops/SkPathOpsOp.cpp index 9472594b4a..b7a48b0510 100644 --- a/src/pathops/SkPathOpsOp.cpp +++ b/src/pathops/SkPathOpsOp.cpp @@ -206,7 +206,7 @@ static const bool gOutInverse[kReverseDifference_SkPathOp + 1][2][2] = { static void dump_path(FILE* file, const SkPath& path, bool force, bool dumpAsHex) { SkDynamicMemoryWStream wStream; path.dump(&wStream, force, dumpAsHex); - sk_sp<SkData> data(wStream.copyToData()); + sk_sp<SkData> data(wStream.detachAsData()); fprintf(file, "%.*s\n", (int) data->size(), data->data()); } diff --git a/src/ports/SkFontHost_win.cpp b/src/ports/SkFontHost_win.cpp index 45e76c797d..ca80baec4f 100644 --- a/src/ports/SkFontHost_win.cpp +++ b/src/ports/SkFontHost_win.cpp @@ -2458,7 +2458,7 @@ protected: SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const override { // could be in base impl - return this->createFromStream(new SkMemoryStream(data)); + return this->createFromStream(new SkMemoryStream(sk_ref_sp(data))); } SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const override { diff --git a/src/ports/SkFontMgr_android.cpp b/src/ports/SkFontMgr_android.cpp index 8d2bc6b04a..8a1916a59b 100644 --- a/src/ports/SkFontMgr_android.cpp +++ b/src/ports/SkFontMgr_android.cpp @@ -406,7 +406,7 @@ protected: } SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const override { - return this->createFromStream(new SkMemoryStream(data), ttcIndex); + return this->createFromStream(new SkMemoryStream(sk_ref_sp(data)), ttcIndex); } SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const override { diff --git a/src/ports/SkFontMgr_custom.cpp b/src/ports/SkFontMgr_custom.cpp index 65887662b0..97489de50d 100644 --- a/src/ports/SkFontMgr_custom.cpp +++ b/src/ports/SkFontMgr_custom.cpp @@ -261,7 +261,7 @@ protected: } SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const override { - return this->createFromStream(new SkMemoryStream(data), ttcIndex); + return this->createFromStream(new SkMemoryStream(sk_ref_sp(data)), ttcIndex); } SkTypeface* onCreateFromStream(SkStreamAsset* bareStream, int ttcIndex) const override { diff --git a/src/ports/SkFontMgr_fontconfig.cpp b/src/ports/SkFontMgr_fontconfig.cpp index fd5f1b0830..54fa1b3575 100644 --- a/src/ports/SkFontMgr_fontconfig.cpp +++ b/src/ports/SkFontMgr_fontconfig.cpp @@ -903,7 +903,7 @@ protected: } SkTypeface* onCreateFromData(SkData* data, int ttcIndex) const override { - return this->createFromStream(new SkMemoryStream(data), ttcIndex); + return this->createFromStream(new SkMemoryStream(sk_ref_sp(data)), ttcIndex); } SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const override { diff --git a/src/ports/SkFontMgr_win_dw.cpp b/src/ports/SkFontMgr_win_dw.cpp index bacac2ceef..833f95bb0e 100644 --- a/src/ports/SkFontMgr_win_dw.cpp +++ b/src/ports/SkFontMgr_win_dw.cpp @@ -929,7 +929,7 @@ SkTypeface* SkFontMgr_DirectWrite::onCreateFromStream(SkStreamAsset* stream, int } SkTypeface* SkFontMgr_DirectWrite::onCreateFromData(SkData* data, int ttcIndex) const { - return this->createFromStream(new SkMemoryStream(data), ttcIndex); + return this->createFromStream(new SkMemoryStream(sk_ref_sp(data)), ttcIndex); } SkTypeface* SkFontMgr_DirectWrite::onCreateFromFile(const char path[], int ttcIndex) const { diff --git a/src/ports/SkImageGeneratorWIC.cpp b/src/ports/SkImageGeneratorWIC.cpp index f22cb5a7af..52d1377f20 100644 --- a/src/ports/SkImageGeneratorWIC.cpp +++ b/src/ports/SkImageGeneratorWIC.cpp @@ -31,7 +31,7 @@ SkImageGenerator* SkImageGeneratorWIC::NewFromEncodedWIC(SkData* data) { SkTScopedComPtr<IStream> iStream; // Note that iStream will take ownership of the new memory stream because // we set |deleteOnRelease| to true. - hr = SkIStream::CreateFromSkStream(new SkMemoryStream(data), true, &iStream); + hr = SkIStream::CreateFromSkStream(new SkMemoryStream(sk_ref_sp(data)), true, &iStream); if (FAILED(hr)) { return nullptr; } diff --git a/src/xps/SkXPSDevice.cpp b/src/xps/SkXPSDevice.cpp index db152844a1..566651e5d9 100644 --- a/src/xps/SkXPSDevice.cpp +++ b/src/xps/SkXPSDevice.cpp @@ -662,7 +662,7 @@ HRESULT SkXPSDevice::createXpsImageBrush( HRM(E_FAIL, "Unable to encode bitmap as png."); } SkMemoryStream* read = new SkMemoryStream; - read->setData(write.copyToData())->unref(); + read->setData(write.detachAsData()); SkTScopedComPtr<IStream> readWrapper; HRM(SkIStream::CreateFromSkStream(read, true, &readWrapper), "Could not create stream from png data."); |