diff options
Diffstat (limited to 'skia/images/SkImageRef.cpp')
-rw-r--r-- | skia/images/SkImageRef.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/skia/images/SkImageRef.cpp b/skia/images/SkImageRef.cpp index 05960a2..bd7a07d 100644 --- a/skia/images/SkImageRef.cpp +++ b/skia/images/SkImageRef.cpp @@ -58,7 +58,7 @@ bool SkImageRef::getInfo(SkBitmap* bitmap) { bool SkImageRef::onDecode(SkImageDecoder* codec, SkStream* stream, SkBitmap* bitmap, SkBitmap::Config config, SkImageDecoder::Mode mode) { - return codec->onDecode(stream, bitmap, config, mode); + return codec->decode(stream, bitmap, config, mode); } bool SkImageRef::prepareBitmap(SkImageDecoder::Mode mode) { @@ -68,6 +68,14 @@ bool SkImageRef::prepareBitmap(SkImageDecoder::Mode mode) { return false; } + /* As soon as we really know our config, we record it, so that on + subsequent calls to the codec, we are sure we will always get the same + result. + */ + if (SkBitmap::kNo_Config != fBitmap.config()) { + fConfig = fBitmap.config(); + } + if (NULL != fBitmap.getPixels() || (SkBitmap::kNo_Config != fBitmap.config() && SkImageDecoder::kDecodeBounds_Mode == mode)) { |