From 7dc9190b765d00467bed7076bacb568fb894e137 Mon Sep 17 00:00:00 2001 From: emmaleer Date: Wed, 27 May 2015 08:49:04 -0700 Subject: fixing onSkipScanlines png error There was a bug in onSkipScanlines where NULL was being passed instead of the SrcRow to png_read_rows. This caused SkipScanlines to appear to be skipping, as fCurrScanline was updated and SkipScanlines returned success, however png_read_rows was not actually reading anything, and no lines were skipped. Review URL: https://codereview.chromium.org/1159853003 --- src/codec/SkCodec_libpng.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/codec') diff --git a/src/codec/SkCodec_libpng.cpp b/src/codec/SkCodec_libpng.cpp index 9cd382092e..c2a032e84e 100644 --- a/src/codec/SkCodec_libpng.cpp +++ b/src/codec/SkCodec_libpng.cpp @@ -624,8 +624,12 @@ public: SkCodecPrintf("setjmp long jump!\n"); return SkImageGenerator::kInvalidInput; } - - png_read_rows(fCodec->fPng_ptr, png_bytepp_NULL, png_bytepp_NULL, count); + //there is a potential tradeoff of memory vs speed created by putting this in a loop. + //calling png_read_rows in a loop is insignificantly slower than calling it once with count + //as png_read_rows has it's own loop which calls png_read_row count times. + for (int i = 0; i < count; i++) { + png_read_rows(fCodec->fPng_ptr, &fSrcRow, png_bytepp_NULL, 1); + } return SkImageGenerator::kSuccess; } -- cgit v1.2.3