diff options
author | Mike Frysinger <vapier@gentoo.org> | 2011-02-19 19:33:58 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2011-02-19 19:33:58 +0000 |
commit | 5983044ae479efc47f2b6130c865b9252f9e9174 (patch) | |
tree | 7666dffbf68e1db13ade02205e2664863647ed28 | |
parent | d594895dbae9c6de4686e8e3e422bcba0dc4381f (diff) | |
download | imlib2-5983044ae479efc47f2b6130c865b9252f9e9174.tar.gz |
png loader: do not hit "interlaced" member of the png ptr struct
this should work with libpng 1.[245].x ... did not check anything older than that though
patch by Thomas Klausner
SVN revision: 57171
-rw-r--r-- | src/modules/loaders/loader_png.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/modules/loaders/loader_png.c b/src/modules/loaders/loader_png.c index 80b644b..e776a55 100644 --- a/src/modules/loaders/loader_png.c +++ b/src/modules/loaders/loader_png.c @@ -238,7 +238,7 @@ save(ImlibImage * im, ImlibProgressFunction progress, char progress_granularity) png_structp png_ptr; png_infop info_ptr; DATA32 *ptr; - int x, y, j; + int x, y, j, interlace; png_bytep row_ptr, data = NULL; png_color_8 sig_bit; int pl = 0; @@ -274,11 +274,11 @@ save(ImlibImage * im, ImlibProgressFunction progress, char progress_granularity) } /* check whether we should use interlacing */ + interlace = PNG_INTERLACE_NONE; if ((tag = __imlib_GetTag(im, "interlacing")) && tag->val) { #ifdef PNG_WRITE_INTERLACING_SUPPORTED - png_ptr->interlaced = PNG_INTERLACE_ADAM7; - num_passes = png_set_interlace_handling(png_ptr); + interlace = PNG_INTERLACE_ADAM7; #endif } @@ -286,7 +286,7 @@ save(ImlibImage * im, ImlibProgressFunction progress, char progress_granularity) if (im->flags & F_HAS_ALPHA) { png_set_IHDR(png_ptr, info_ptr, im->w, im->h, 8, - PNG_COLOR_TYPE_RGB_ALPHA, png_ptr->interlaced, + PNG_COLOR_TYPE_RGB_ALPHA, interlace, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); #ifdef WORDS_BIGENDIAN png_set_swap_alpha(png_ptr); @@ -297,7 +297,7 @@ save(ImlibImage * im, ImlibProgressFunction progress, char progress_granularity) else { png_set_IHDR(png_ptr, info_ptr, im->w, im->h, 8, PNG_COLOR_TYPE_RGB, - png_ptr->interlaced, PNG_COMPRESSION_TYPE_BASE, + interlace, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); data = malloc(im->w * 3 * sizeof(char)); } @@ -344,6 +344,10 @@ save(ImlibImage * im, ImlibProgressFunction progress, char progress_granularity) png_set_shift(png_ptr, &sig_bit); png_set_packing(png_ptr); +#ifdef PNG_WRITE_INTERLACING_SUPPORTED + num_passes = png_set_interlace_handling(png_ptr); +#endif + for (pass = 0; pass < num_passes; pass++) { ptr = im->data; |