diff options
-rw-r--r-- | include/codec/SkAndroidCodec.h | 5 | ||||
-rw-r--r-- | src/codec/SkAndroidCodec.cpp | 4 | ||||
-rw-r--r-- | tests/CodecTest.cpp | 9 |
3 files changed, 10 insertions, 8 deletions
diff --git a/include/codec/SkAndroidCodec.h b/include/codec/SkAndroidCodec.h index 0d6cc185d9..e1e2843393 100644 --- a/include/codec/SkAndroidCodec.h +++ b/include/codec/SkAndroidCodec.h @@ -20,6 +20,11 @@ class SK_API SkAndroidCodec : SkNoncopyable { public: /** + * Pass ownership of an SkCodec to a newly-created SkAndroidCodec. + */ + static std::unique_ptr<SkAndroidCodec> MakeFromCodec(std::unique_ptr<SkCodec>); + + /** * If this stream represents an encoded image that we know how to decode, * return an SkAndroidCodec that can decode it. Otherwise return NULL. * diff --git a/src/codec/SkAndroidCodec.cpp b/src/codec/SkAndroidCodec.cpp index 97e07ce70b..a7ffa4e93b 100644 --- a/src/codec/SkAndroidCodec.cpp +++ b/src/codec/SkAndroidCodec.cpp @@ -66,6 +66,10 @@ SkAndroidCodec::~SkAndroidCodec() {} std::unique_ptr<SkAndroidCodec> SkAndroidCodec::MakeFromStream(std::unique_ptr<SkStream> stream, SkPngChunkReader* chunkReader) { auto codec = SkCodec::MakeFromStream(std::move(stream), nullptr, chunkReader); + return MakeFromCodec(std::move(codec)); +} + +std::unique_ptr<SkAndroidCodec> SkAndroidCodec::MakeFromCodec(std::unique_ptr<SkCodec> codec) { if (nullptr == codec) { return nullptr; } diff --git a/tests/CodecTest.cpp b/tests/CodecTest.cpp index 7eddbb785e..df94547600 100644 --- a/tests/CodecTest.cpp +++ b/tests/CodecTest.cpp @@ -406,14 +406,7 @@ static void check(skiatest::Reporter* r, return; } - std::unique_ptr<SkAndroidCodec> androidCodec(nullptr); - if (isIncomplete) { - size_t size = stream->getLength(); - sk_sp<SkData> data((SkData::MakeFromStream(stream.get(), 2 * size / 3))); - androidCodec = SkAndroidCodec::MakeFromData(data); - } else { - androidCodec = SkAndroidCodec::MakeFromStream(std::move(stream)); - } + auto androidCodec = SkAndroidCodec::MakeFromCodec(std::move(codec)); if (!androidCodec) { ERRORF(r, "Unable to decode '%s'", path); return; |