diff options
author | 2015-10-27 13:28:25 -0700 | |
---|---|---|
committer | 2015-10-27 13:28:25 -0700 | |
commit | c37799282ff7dc8cbec7e2b7ed2f6df6cdddf6a6 (patch) | |
tree | 1e4445c316fc8c7caa58050d3ab3316a338d2883 | |
parent | 3f65e93b19027e61a640a8f421dcd745146446f7 (diff) |
Make DMSrcSink fail fatally when decodeRegion() fails for BRDSrcs
This involves disabling webps for kCanvas_Strategy.
We have not yet implemented webp subset decodes for this
strategy.
BUG=skia:4521
Review URL: https://codereview.chromium.org/1405273004
-rw-r--r-- | dm/DMSrcSink.cpp | 11 | ||||
-rw-r--r-- | tools/SkBitmapRegionDecoderInterface.cpp | 7 |
2 files changed, 9 insertions, 9 deletions
diff --git a/dm/DMSrcSink.cpp b/dm/DMSrcSink.cpp index b14c573679..1a845507d6 100644 --- a/dm/DMSrcSink.cpp +++ b/dm/DMSrcSink.cpp @@ -128,10 +128,7 @@ Error BRDSrc::draw(SkCanvas* canvas) const { SkBitmap bitmap; if (!brd->decodeRegion(&bitmap, nullptr, SkIRect::MakeXYWH(0, 0, width, height), fSampleSize, colorType, false)) { - // FIXME: Make this a fatal error. We need to disable webps for kCanvas_Strategy - // because we have not implemented kCanvas_Strategy for webp. We may also need to - // deal with color conversion errors for kOriginal_Strategy. - return Error::Nonfatal("Cannot decode region.\n"); + return "Cannot decode region.\n"; } if (colorType != bitmap.colorType()) { return Error::Nonfatal("Cannot convert to color type.\n"); @@ -187,11 +184,7 @@ Error BRDSrc::draw(SkCanvas* canvas) const { SkBitmap bitmap; if (!brd->decodeRegion(&bitmap, nullptr, SkIRect::MakeXYWH(decodeLeft, decodeTop, decodeWidth, decodeHeight), fSampleSize, colorType, false)) { - // FIXME: Make this a fatal error. We need to disable webps for - // kCanvas_Strategy because we have not implemented kCanvas_Strategy for - // webp. We may also need to deal with color conversion errors for - // kOriginal_Strategy. - return Error::Nonfatal("Cannot not decode region.\n"); + return "Cannot not decode region.\n"; } if (colorType != bitmap.colorType()) { return Error::Nonfatal("Cannot convert to color type.\n"); diff --git a/tools/SkBitmapRegionDecoderInterface.cpp b/tools/SkBitmapRegionDecoderInterface.cpp index 59415383d3..d009b27f3a 100644 --- a/tools/SkBitmapRegionDecoderInterface.cpp +++ b/tools/SkBitmapRegionDecoderInterface.cpp @@ -44,6 +44,13 @@ SkBitmapRegionDecoderInterface* SkBitmapRegionDecoderInterface::CreateBitmapRegi SkCodecPrintf("Error: Failed to create decoder.\n"); return nullptr; } + + if (SkEncodedFormat::kWEBP_SkEncodedFormat == codec->getEncodedFormat()) { + // FIXME: Support webp using a special case. Webp does not support + // scanline decoding. + return nullptr; + } + switch (codec->getScanlineOrder()) { case SkCodec::kTopDown_SkScanlineOrder: case SkCodec::kNone_SkScanlineOrder: |