Upstream Android modifications to the image encoders/decoders.
This CL does not update the libjpeg as that change is large enough
to warrant its own CL.
Author: djsollen@google.com
Reviewed By: reed@google.com,robertphillips@google.com,scroggo@google.com
Review URL: https://chromiumcodereview.appspot.com/12604006
git-svn-id: http://skia.googlecode.com/svn/trunk@8155 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/images/SkImageDecoder_libico.cpp b/src/images/SkImageDecoder_libico.cpp
index edfaa2e..14f575b 100644
--- a/src/images/SkImageDecoder_libico.cpp
+++ b/src/images/SkImageDecoder_libico.cpp
@@ -16,19 +16,16 @@
public:
SkICOImageDecoder();
- virtual Format getFormat() const {
+ virtual Format getFormat() const SK_OVERRIDE {
return kICO_Format;
}
protected:
- virtual bool onDecode(SkStream* stream, SkBitmap* bm, Mode);
-};
+ virtual bool onDecode(SkStream* stream, SkBitmap* bm, Mode) SK_OVERRIDE;
-#if 0 // UNUSED
-SkImageDecoder* SkCreateICOImageDecoder() {
- return new SkICOImageDecoder;
-}
-#endif
+private:
+ typedef SkImageDecoder INHERITED;
+};
/////////////////////////////////////////////////////////////////////////////////////////
@@ -235,12 +232,16 @@
//if the andbitmap (mask) is all zeroes, then we can easily do an index bitmap
//however, with small images with large colortables, maybe it's better to still do argb_8888
- bm->setConfig(SkBitmap::kARGB_8888_Config, w, h, calculateRowBytesFor8888(w, bitCount));
-
if (SkImageDecoder::kDecodeBounds_Mode == mode) {
+ bm->setConfig(SkBitmap::kARGB_8888_Config, w, h, calculateRowBytesFor8888(w, bitCount));
delete[] colors;
return true;
}
+ // No Bitmap reuse supported for this format
+ if (!bm->isNull()) {
+ return false;
+ }
+ bm->setConfig(SkBitmap::kARGB_8888_Config, w, h, calculateRowBytesFor8888(w, bitCount));
if (!this->allocPixelRef(bm, NULL))
{