Chromium Code Reviews| Index: src/images/SkImageDecoder_libjpeg.cpp |
| diff --git a/src/images/SkImageDecoder_libjpeg.cpp b/src/images/SkImageDecoder_libjpeg.cpp |
| index 3b3ea887e3cde437d7469d2a43126a2cb604a6eb..28c3edeace5668a157b98d53d52294c3bd75282c 100644 |
| --- a/src/images/SkImageDecoder_libjpeg.cpp |
| +++ b/src/images/SkImageDecoder_libjpeg.cpp |
| @@ -19,6 +19,10 @@ |
| #include "SkRect.h" |
| #include "SkCanvas.h" |
| +#if defined(SK_DEBUG) |
| +#include "SkRTConf.h" // SK_CONF_DECLARE |
| +#endif // defined(SK_DEBUG) |
| + |
| #include <stdio.h> |
| extern "C" { |
| #include "jpeglib.h" |
| @@ -35,6 +39,12 @@ extern "C" { |
| // If ANDROID_RGB is defined by in the jpeg headers it indicates that jpeg offers |
| // support for two additional formats (1) JCS_RGBA_8888 and (2) JCS_RGB_565. |
| +#if defined(SK_DEBUG) |
| +SK_CONF_DECLARE(bool, c_suppressJPEGImageDecoderWarnings, |
| + "images.jpeg.suppressDecoderWarnings", false, |
| + "Suppress most JPG warnings when calling decode functions."); |
| +#endif // defined(SK_DEBUG) |
| + |
| ////////////////////////////////////////////////////////////////////////// |
| ////////////////////////////////////////////////////////////////////////// |
| @@ -54,12 +64,27 @@ static void overwrite_mem_buffer_size(jpeg_decompress_struct* cinfo) { |
| ////////////////////////////////////////////////////////////////////////// |
| ////////////////////////////////////////////////////////////////////////// |
| +static void do_nothing_emit_message(jpeg_common_struct*, int) { |
| + /* do nothing */ |
| +} |
| + |
| static void initialize_info(jpeg_decompress_struct* cinfo, skjpeg_source_mgr* src_mgr) { |
| SkASSERT(cinfo != NULL); |
| SkASSERT(src_mgr != NULL); |
| jpeg_create_decompress(cinfo); |
| overwrite_mem_buffer_size(cinfo); |
| cinfo->src = src_mgr; |
| +#if defined(SK_DEBUG) |
| + /* To suppress warnings with a SK_DEBUG binary, set the |
| + * environment variable "skia_images_jpeg_suppressDecoderWarnings" |
| + * to "true". Inside a program that links to skia: |
| + * SK_CONF_SET("images.jpeg.suppressDecoderWarnings", true); */ |
| + if (c_suppressJPEGImageDecoderWarnings) { |
| + cinfo->err->emit_message = &do_nothing_emit_message; |
| + } |
| +#else // Always suppress in release mode. |
| + cinfo->err->emit_message = &do_nothing_emit_message; |
| +#endif //defined(SK_DEBUG) |
| } |
| #ifdef SK_BUILD_FOR_ANDROID |
| @@ -556,7 +581,7 @@ bool SkJPEGImageDecoder::onDecode(SkStream* stream, SkBitmap* bm, Mode mode) { |
| // if row_count == 0, then we didn't get a scanline, so abort. |
| // if we supported partial images, we might return true in this case |
| if (0 == row_count) { |
| - return return_false(cinfo, *bm, "read_scanlines"); |
| + return true; |
|
scroggo
2013/10/02 17:05:04
The remaining rows will still be uninitialized.
|
| } |
| if (this->shouldCancelDecode()) { |
| return return_false(cinfo, *bm, "shouldCancelDecode"); |
| @@ -606,7 +631,7 @@ bool SkJPEGImageDecoder::onDecode(SkStream* stream, SkBitmap* bm, Mode mode) { |
| JSAMPLE* rowptr = (JSAMPLE*)srcRow; |
| int row_count = jpeg_read_scanlines(&cinfo, &rowptr, 1); |
| if (0 == row_count) { |
| - return return_false(cinfo, *bm, "read_scanlines"); |
| + return true; |
|
scroggo
2013/10/02 17:05:04
Ditto
|
| } |
| if (this->shouldCancelDecode()) { |
| return return_false(cinfo, *bm, "shouldCancelDecode"); |
| @@ -788,7 +813,7 @@ bool SkJPEGImageDecoder::onDecodeSubset(SkBitmap* bm, const SkIRect& region) { |
| // if row_count == 0, then we didn't get a scanline, so abort. |
| // if we supported partial images, we might return true in this case |
| if (0 == rowCount) { |
| - return return_false(*cinfo, bitmap, "read_scanlines"); |
| + return true; |
|
scroggo
2013/10/02 17:05:04
Ditto
|
| } |
| if (this->shouldCancelDecode()) { |
| return return_false(*cinfo, bitmap, "shouldCancelDecode"); |
| @@ -845,7 +870,7 @@ bool SkJPEGImageDecoder::onDecodeSubset(SkBitmap* bm, const SkIRect& region) { |
| JSAMPLE* rowptr = (JSAMPLE*)srcRow; |
| int row_count = jpeg_read_tile_scanline(cinfo, fImageIndex->huffmanIndex(), &rowptr); |
| if (0 == row_count) { |
| - return return_false(*cinfo, bitmap, "read_scanlines"); |
| + return true; |
|
scroggo
2013/10/02 17:05:04
Ditto
|
| } |
| if (this->shouldCancelDecode()) { |
| return return_false(*cinfo, bitmap, "shouldCancelDecode"); |