summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2011-02-19 19:33:58 +0000
committerMike Frysinger <vapier@gentoo.org>2011-02-19 19:33:58 +0000
commit5983044ae479efc47f2b6130c865b9252f9e9174 (patch)
tree7666dffbf68e1db13ade02205e2664863647ed28
parentd594895dbae9c6de4686e8e3e422bcba0dc4381f (diff)
downloadimlib2-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.c14
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;