Index: dm/DMSrcSink.cpp |
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp |
index a615b78e7aa34b5296e8332f5ea4036531800a39..803ff3cf990a82462769cb813b67f744d2ccc0d2 100644 |
--- a/dm/DMSrcSink.cpp |
+++ b/dm/DMSrcSink.cpp |
@@ -66,7 +66,8 @@ Error ImageSrc::draw(SkCanvas* canvas) const { |
SkAutoLockPixels alp(bitmap); |
const SkImageGenerator::Result result = codec->getPixels(info, bitmap.getPixels(), |
bitmap.rowBytes()); |
- if (result != SkImageGenerator::kSuccess) { |
+ if (result != SkImageGenerator::kSuccess && |
+ result != SkImageGenerator::kIncompleteInput) { |
return SkStringPrintf("Couldn't getPixels %s.", fPath.c_str()); |
} |
} else { |
@@ -114,15 +115,27 @@ Error ImageSrc::draw(SkCanvas* canvas) const { |
SkISize ImageSrc::size() const { |
SkAutoTUnref<SkData> encoded(SkData::NewFromFileName(fPath.c_str())); |
- SkBitmap bitmap; |
- if (!encoded || !SkImageDecoder::DecodeMemory(encoded->data(), |
- encoded->size(), |
- &bitmap, |
- kUnknown_SkColorType, |
- SkImageDecoder::kDecodeBounds_Mode)) { |
- return SkISize::Make(0,0); |
+ if (FLAGS_codec) { |
msarett
2015/03/07 00:19:50
I couldn't figure out how to get rid of these chan
|
+ SkAutoTDelete<SkCodec> codec(SkCodec::NewFromData(encoded)); |
+ if (!codec) { |
+ return SkISize::Make(0,0); |
+ } |
+ SkImageInfo info; |
+ if (!codec->getInfo(&info)) { |
+ return SkISize::Make(0,0); |
+ } |
+ return info.dimensions(); |
+ } else { |
+ SkBitmap bitmap; |
+ if (!encoded || !SkImageDecoder::DecodeMemory(encoded->data(), |
+ encoded->size(), |
+ &bitmap, |
+ kUnknown_SkColorType, |
+ SkImageDecoder::kDecodeBounds_Mode)) { |
+ return SkISize::Make(0,0); |
+ } |
+ return bitmap.dimensions(); |
} |
- return bitmap.dimensions(); |
} |
Name ImageSrc::name() const { |