aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar msarett <msarett@google.com>2015-10-27 13:28:25 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2015-10-27 13:28:25 -0700
commitc37799282ff7dc8cbec7e2b7ed2f6df6cdddf6a6 (patch)
tree1e4445c316fc8c7caa58050d3ab3316a338d2883
parent3f65e93b19027e61a640a8f421dcd745146446f7 (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.cpp11
-rw-r--r--tools/SkBitmapRegionDecoderInterface.cpp7
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: