Chromium Code Reviews| 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 { |