File DirectFB-1.4.5-libpng15.patch of Package DirectFB

Index: DirectFB-1.4.5/tools/directfb-csource.c
===================================================================
--- DirectFB-1.4.5.orig/tools/directfb-csource.c
+++ DirectFB-1.4.5/tools/directfb-csource.c
@@ -290,11 +290,12 @@ static DFBResult load_image (const char
      FILE          *fp;
      png_structp    png_ptr  = NULL;
      png_infop      info_ptr = NULL;
+     png_colorp     png_palette;
      png_uint_32    width, height;
      unsigned char *data     = NULL;
      int            type;
      char           header[8];
-     int            bytes, pitch;
+     int            bytes, pitch, num_palette;
 
      dest_format =
        (desc->flags & DSDESC_PIXELFORMAT) ? desc->pixelformat : DSPF_UNKNOWN;
@@ -320,7 +321,7 @@ static DFBResult load_image (const char
      if (!png_ptr)
           goto cleanup;
 
-     if (setjmp (png_ptr->jmpbuf)) {
+     if (setjmp (png_jmpbuf(png_ptr))) {
           if (desc->preallocated[0].data) {
                free (desc->preallocated[0].data);
                desc->preallocated[0].data = NULL;
@@ -388,16 +389,17 @@ static DFBResult load_image (const char
 
      switch (src_format) {
           case DSPF_LUT8:
-               if (info_ptr->num_palette) {
+               png_get_PLTE(png_ptr, info_ptr, &png_palette, &num_palette);
+               if (num_palette) {
                     png_byte *alpha;
                     int       i, num;
 
-                    *palette_size = MIN (info_ptr->num_palette, 256);
+                    *palette_size = MIN (num_palette, 256);
                     for (i = 0; i < *palette_size; i++) {
                          palette[i].a = 0xFF;
-                         palette[i].r = info_ptr->palette[i].red;
-                         palette[i].g = info_ptr->palette[i].green;
-                         palette[i].b = info_ptr->palette[i].blue;
+                         palette[i].r = png_palette[i].red;
+                         palette[i].g = png_palette[i].green;
+                         palette[i].b = png_palette[i].blue;
                     }
                     if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS)) {
                          png_get_tRNS (png_ptr, info_ptr, &alpha, &num, NULL);
openSUSE Build Service is sponsored by