aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/codec/SkAndroidCodec.h5
-rw-r--r--src/codec/SkAndroidCodec.cpp4
-rw-r--r--tests/CodecTest.cpp9
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;