Index: src/images/SkImageDecoder.cpp |
diff --git a/src/images/SkImageDecoder.cpp b/src/images/SkImageDecoder.cpp |
index f9b04e39a7b3de3b247221a13426ef663c42c647..2d41e9346f5a39cab112085e5cc2766cfdcf7a52 100644 |
--- a/src/images/SkImageDecoder.cpp |
+++ b/src/images/SkImageDecoder.cpp |
@@ -156,7 +156,8 @@ SkColorType SkImageDecoder::getPrefColorType(SrcDepth srcDepth, bool srcHasAlpha |
return ct; |
} |
-bool SkImageDecoder::decode(SkStream* stream, SkBitmap* bm, SkColorType pref, Mode mode) { |
+SkImageDecoder::Result SkImageDecoder::decode(SkStream* stream, SkBitmap* bm, SkColorType pref, |
+ Mode mode) { |
// we reset this to false before calling onDecode |
fShouldCancelDecode = false; |
// assign this, for use by getPrefColorType(), in case fUsePrefTable is false |
@@ -164,12 +165,12 @@ bool SkImageDecoder::decode(SkStream* stream, SkBitmap* bm, SkColorType pref, Mo |
// pass a temporary bitmap, so that if we return false, we are assured of |
// leaving the caller's bitmap untouched. |
- SkBitmap tmp; |
- if (!this->onDecode(stream, &tmp, mode)) { |
- return false; |
+ SkBitmap tmp; |
+ const Result result = this->onDecode(stream, &tmp, mode); |
+ if (kFailure != result) { |
+ bm->swap(tmp); |
} |
- bm->swap(tmp); |
- return true; |
+ return result; |
} |
bool SkImageDecoder::decodeSubset(SkBitmap* bm, const SkIRect& rect, SkColorType pref) { |