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);