From adc6e0b13984ce793bd865093bbd9f73edfe3850 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 13 Mar 2015 19:50:00 +0100 Subject: [PATCH] (RPNG) Start using restore_buf_size --- libretro-common/formats/png/rpng_decode_common.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/libretro-common/formats/png/rpng_decode_common.h b/libretro-common/formats/png/rpng_decode_common.h index eb9ff0e64d..e7e577c76a 100644 --- a/libretro-common/formats/png/rpng_decode_common.h +++ b/libretro-common/formats/png/rpng_decode_common.h @@ -392,7 +392,7 @@ static int png_reverse_filter_copy_line(uint32_t *data, const struct png_ihdr *i } static bool png_reverse_filter(uint32_t *data, const struct png_ihdr *ihdr, - const uint8_t *inflate_buf, struct rpng_process_t *pngp, + struct rpng_process_t *pngp, const uint32_t *palette) { int ret; @@ -405,10 +405,10 @@ static bool png_reverse_filter(uint32_t *data, const struct png_ihdr *ihdr, if (pngp->h < ihdr->height) { - unsigned filter = *inflate_buf++; + unsigned filter = *pngp->inflate_buf++; pngp->restore_buf_size += 1; ret = png_reverse_filter_copy_line(data, - ihdr, inflate_buf, pngp, palette, filter); + ihdr, pngp->inflate_buf, pngp, palette, filter); } if (ret == 1 || ret == -1) @@ -418,11 +418,13 @@ static bool png_reverse_filter(uint32_t *data, const struct png_ihdr *ihdr, } pngp->h++; - inflate_buf += pngp->pitch; + pngp->inflate_buf += pngp->pitch; pngp->restore_buf_size += pngp->pitch; data += ihdr->width; }while(1); + pngp->inflate_buf -= pngp->restore_buf_size; + if (ret == 1) return true; return false; @@ -453,7 +455,7 @@ static int png_reverse_filter_adam7(uint32_t *data, } if (!png_reverse_filter(pngp->data, - &pngp->ihdr, pngp->inflate_buf, pngp, palette)) + &pngp->ihdr, pngp, palette)) { free(pngp->data); ret = -1; @@ -506,7 +508,7 @@ static bool png_reverse_filter_loop(struct rpng_t *rpng, return false; } else if (!png_reverse_filter(*data, - &rpng->ihdr, rpng->process.inflate_buf, &rpng->process, rpng->palette)) + &rpng->ihdr, &rpng->process, rpng->palette)) return false; return true;