| 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) {
|
| + 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 {
|
|
|