From a7aab3d21ba79628bb89f88a10c19b423aee0ee7 Mon Sep 17 00:00:00 2001 From: divverent Date: Sat, 11 Feb 2012 15:55:36 +0000 Subject: [PATCH] support libpng 1.5.0 git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@11677 d7cf8633-e32d-0410-b094-e92efae38249 --- image_png.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/image_png.c b/image_png.c index 9c03f8f3..e498b9e5 100644 --- a/image_png.c +++ b/image_png.c @@ -63,6 +63,7 @@ static unsigned int (*qpng_access_version_number) (void); // FIXME is this re static void (*qpng_write_info) (void*, void*); static void (*qpng_write_row) (void*, unsigned char*); static void (*qpng_write_end) (void*, void*); +static void* (*qpng_jmpbuf) (void*); static dllfunction_t pngfuncs[] = { @@ -99,6 +100,7 @@ static dllfunction_t pngfuncs[] = {"png_write_info", (void **) &qpng_write_info}, {"png_write_row", (void **) &qpng_write_row}, {"png_write_end", (void **) &qpng_write_end}, + {"png_jmpbuf", (void **) &qpng_jmpbuf}, {NULL, NULL} }; @@ -126,13 +128,17 @@ qboolean PNG_OpenLibrary (void) const char* dllnames [] = { #if WIN32 + "libpng15-15.dll", + "libpng15.dll", "libpng14-14.dll", "libpng14.dll", "libpng12.dll", #elif defined(MACOSX) + "libpng15.15.dylib", "libpng14.14.dylib", "libpng12.0.dylib", #else + "libpng15.so.15", // WTF libtool guidelines anyone? "libpng14.so.14", // WTF libtool guidelines anyone? "libpng12.so.0", "libpng.so", // FreeBSD @@ -171,6 +177,7 @@ void PNG_CloseLibrary (void) #define PNG_LIBPNG_VER_STRING_12 "1.2.4" #define PNG_LIBPNG_VER_STRING_14 "1.4.0" +#define PNG_LIBPNG_VER_STRING_15 "1.5.0" #define PNG_COLOR_MASK_PALETTE 1 #define PNG_COLOR_MASK_COLOR 2 @@ -273,7 +280,9 @@ unsigned char *PNG_LoadImage_BGRA (const unsigned char *raw, int filesize, int * if(qpng_sig_cmp(raw, 0, filesize)) return NULL; png = (void *)qpng_create_read_struct( - (qpng_access_version_number() / 100 == 102) ? PNG_LIBPNG_VER_STRING_12 : PNG_LIBPNG_VER_STRING_14, // nasty hack to support both libpng12 and libpng14 + (qpng_access_version_number() / 100 == 102) ? PNG_LIBPNG_VER_STRING_12 : + (qpng_access_version_number() / 100 == 104) ? PNG_LIBPNG_VER_STRING_14 : + PNG_LIBPNG_VER_STRING_15, // nasty hack... whatever 0, PNG_error_fn, PNG_warning_fn ); if(!png) @@ -285,17 +294,7 @@ unsigned char *PNG_LoadImage_BGRA (const unsigned char *raw, int filesize, int * // NOTE: this relies on jmp_buf being the first thing in the png structure // created by libpng! (this is correct for libpng 1.2.x) -#ifdef __cplusplus -#ifdef WIN64 - if (setjmp((_JBTYPE *)png)) -#elif defined(MACOSX) || defined(WIN32) - if (setjmp((int *)png)) -#else - if (setjmp((__jmp_buf_tag *)png)) -#endif -#else - if (setjmp(png)) -#endif + if (setjmp(qpng_jmpbuf(png))) { if (my_png.Data) Mem_Free(my_png.Data); -- 2.39.2