summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Savchenko <bircoph@gentoo.org>2016-05-02 18:51:22 +0300
committerAndrew Savchenko <bircoph@gentoo.org>2016-05-02 18:51:43 +0300
commit3d5b16d3365e80c281e9131e011a6d88ddf61167 (patch)
treec6f5c94e7030efbfd7fbc1511139cd41894f8fd7 /media-libs/libafterimage/files
parentmedia-libs/libafterimage: update deps (diff)
downloadgentoo-3d5b16d3365e80c281e9131e011a6d88ddf61167.tar.gz
gentoo-3d5b16d3365e80c281e9131e011a6d88ddf61167.tar.bz2
gentoo-3d5b16d3365e80c281e9131e011a6d88ddf61167.zip
media-libs/libafterimage-1.20-r1: fix bug 571654
- port to giflib-5 API; - update ebuild to EAPI 6; - add new USE flags and deps for previously ignored dependencies. Package-Manager: portage-2.2.28 Signed-off-by: Andrew Savchenko <bircoph@gentoo.org>
Diffstat (limited to 'media-libs/libafterimage/files')
-rw-r--r--media-libs/libafterimage/files/libafterimage-giflib5.patch382
1 files changed, 382 insertions, 0 deletions
diff --git a/media-libs/libafterimage/files/libafterimage-giflib5.patch b/media-libs/libafterimage/files/libafterimage-giflib5.patch
new file mode 100644
index 000000000000..32037d97546d
--- /dev/null
+++ b/media-libs/libafterimage/files/libafterimage-giflib5.patch
@@ -0,0 +1,382 @@
+diff -Naurd libAfterImage-1.20.orig/export.c libAfterImage-1.20/export.c
+--- libAfterImage-1.20.orig/export.c 2016-05-01 11:44:19.000000000 +0300
++++ libAfterImage-1.20/export.c 2016-05-02 10:57:59.688984491 +0300
+@@ -1048,6 +1048,9 @@
+ Bool new_image = True ;
+ START_TIME(started);
+ int cmap_size = 1;
++#if (GIFLIB_MAJOR>=5)
++ int errcode;
++#endif
+ #define GIF_NETSCAPE_EXT_BYTES 3
+ unsigned char netscape_ext_bytes[GIF_NETSCAPE_EXT_BYTES] = { 0x1, 0x0, 0x0};
+ #define GIF_GCE_BYTES 4
+@@ -1086,10 +1089,18 @@
+
+ while( cmap_size < 256 && cmap_size < (int)cmap.count+(gce_bytes[0]&0x01) )
+ cmap_size = cmap_size<<1 ;
++#if (GIFLIB_MAJOR>=5)
++ if( (gif_cmap = GifMakeMapObject(cmap_size, NULL )) == NULL )
++#else
+ if( (gif_cmap = MakeMapObject(cmap_size, NULL )) == NULL )
++#endif
+ {
+ free( mapped_im );
++#if (GIFLIB_MAJOR>=5)
++ ASIM_PrintGifError(E_GIF_ERR_NOT_ENOUGH_MEM);
++#else
+ ASIM_PrintGifError();
++#endif
+ return False;
+ }
+ memcpy( &(gif_cmap->Colors[0]), &(cmap.entries[0]), MIN(cmap.count,(unsigned int)cmap_size)*3 );
+@@ -1101,13 +1112,25 @@
+ SavedImage *images = NULL ;
+ int count = 0 ;
+ /* TODO: do something about multiimage files !!! */
++#if (GIFLIB_MAJOR>=5)
++ gif = open_gif_read(infile, &errcode);
++#else
+ gif = open_gif_read(infile);
++#endif
+ if( gif == NULL || get_gif_saved_images(gif, -1, &images, &count) == GIF_ERROR)
+ {
++#if (GIFLIB_MAJOR>=5)
++ ASIM_PrintGifError(errcode);
++#else
+ ASIM_PrintGifError();
++#endif
+ if( gif )
+ {
++#if (GIFLIB_MAJOR>=5)
++ DGifCloseFile(gif, &errcode);
++#else
+ DGifCloseFile(gif);
++#endif
+ gif = NULL ;
+ }
+ if (infile)
+@@ -1123,14 +1146,22 @@
+ gif_src = *gif ;
+ gif->SColorMap = NULL ;
+ gif->Image.ColorMap = NULL ;
++#if (GIFLIB_MAJOR>=5)
++ DGifCloseFile(gif, &errcode);
++#else
+ DGifCloseFile(gif);
++#endif
+ gif = NULL;
+ fclose (infile);
+ infile = NULL;
+ outfile = open_writeable_image_file( path );
+
+ if (outfile)
++#if (GIFLIB_MAJOR>=5)
++ gif = EGifOpenFileHandle(fileno(outfile), &errcode);
++#else
+ gif = EGifOpenFileHandle(fileno(outfile));
++#endif
+
+ if (gif)
+ {
+@@ -1141,26 +1172,46 @@
+ gif_src.SColorMap )) == GIF_OK )
+ status = write_gif_saved_images( gif, images, count );
+ if( status != GIF_OK )
++#if (GIFLIB_MAJOR>=5)
++ ASIM_PrintGifError(status);
++#else
+ ASIM_PrintGifError();
++#endif
+ }
+ if (gif_src.SColorMap)
+ { /* we only want to save private colormap if it is any different from
+ * screen colormap ( saves us 768 bytes per image ) */
+ if( gif_cmap->ColorCount == gif_src.SColorMap->ColorCount )
+ dont_save_cmap = ( memcmp( gif_cmap->Colors, gif_src.SColorMap->Colors, gif_cmap->ColorCount*sizeof(GifColorType)) == 0 );
++#if (GIFLIB_MAJOR>=5)
++ GifFreeMapObject(gif_src.SColorMap);
++#else
+ FreeMapObject(gif_src.SColorMap);
++#endif
+ }
+ if (gif)
+ {
+ EGifPutExtension(gif, GRAPHICS_EXT_FUNC_CODE, GIF_GCE_BYTES, &(gce_bytes[0]));
+ if( get_flags( params->gif.flags, EXPORT_ANIMATION_REPEATS ) )
+ {
++#if (GIFLIB_MAJOR>=5)
++ EGifPutExtensionLeader(gif, APPLICATION_EXT_FUNC_CODE);
++ EGifPutExtensionBlock(gif, 11, "NETSCAPE2.0");
++ EGifPutExtensionBlock(gif, GIF_NETSCAPE_EXT_BYTES, &(netscape_ext_bytes[0]));
++ EGifPutExtensionTrailer(gif);
++#else
+ EGifPutExtensionFirst(gif, APPLICATION_EXT_FUNC_CODE, 11, "NETSCAPE2.0");
+ EGifPutExtensionLast(gif, 0, GIF_NETSCAPE_EXT_BYTES, &(netscape_ext_bytes[0]));
++#endif
+ }
+
++#if (GIFLIB_MAJOR>=5)
++ if( (errcode = EGifPutImageDesc(gif, 0, 0, im->width, im->height, FALSE, (dont_save_cmap)?NULL:gif_cmap )) == GIF_ERROR )
++ ASIM_PrintGifError(errcode);
++#else
+ if( EGifPutImageDesc(gif, 0, 0, im->width, im->height, FALSE, (dont_save_cmap)?NULL:gif_cmap ) == GIF_ERROR )
+ ASIM_PrintGifError();
++#endif
+ }
+ }
+ free_gif_saved_images( images, count );
+@@ -1172,24 +1223,46 @@
+ outfile = open_writeable_image_file(path);
+
+ if (outfile)
++ {
++#if (GIFLIB_MAJOR>=5)
++ gif = EGifOpenFileHandle(fileno(outfile), &errcode);
++ if (errcode != E_GIF_SUCCEEDED)
++ ASIM_PrintGifError(errcode);
++#else
+ if ((gif = EGifOpenFileHandle(fileno(outfile))) == NULL)
+ ASIM_PrintGifError();
++#endif
++ }
+ }
+
+ if( new_image && gif )
+ {
++#if (GIFLIB_MAJOR>=5)
++ if( (errcode = EGifPutScreenDesc(gif, im->width, im->height, cmap_size, 0, gif_cmap )) == GIF_ERROR )
++ ASIM_PrintGifError(errcode);
++#else
+ if( EGifPutScreenDesc(gif, im->width, im->height, cmap_size, 0, gif_cmap ) == GIF_ERROR )
+ ASIM_PrintGifError();
++#endif
+
+ EGifPutExtension(gif, 0xf9, GIF_GCE_BYTES, &(gce_bytes[0]));
+
++#if (GIFLIB_MAJOR>=5)
++ if( (errcode = EGifPutImageDesc(gif, 0, 0, im->width, im->height, FALSE, NULL )) == GIF_ERROR )
++ ASIM_PrintGifError(errcode);
++#else
+ if( EGifPutImageDesc(gif, 0, 0, im->width, im->height, FALSE, NULL ) == GIF_ERROR )
+ ASIM_PrintGifError();
++#endif
+ }
+
+ if( gif_cmap )
+ {
++#if (GIFLIB_MAJOR>=5)
++ GifFreeMapObject(gif_cmap);
++#else
+ FreeMapObject(gif_cmap);
++#endif
+ gif_cmap = NULL ;
+ }
+ if( gif )
+@@ -1203,12 +1276,23 @@
+ register int *src = mapped_im + x*y;
+ while( --x >= 0 )
+ row_pointer[x] = src[x] ;
++#if (GIFLIB_MAJOR>=5)
++ if( (errcode = EGifPutLine(gif, row_pointer, im->width)) == GIF_ERROR)
++ ASIM_PrintGifError(errcode);
++#else
+ if( EGifPutLine(gif, row_pointer, im->width) == GIF_ERROR)
+ ASIM_PrintGifError();
++#endif
+ }
+ free( row_pointer );
++#if (GIFLIB_MAJOR>=5)
++ EGifCloseFile(gif, &errcode);
++ if (errcode != E_GIF_SUCCEEDED)
++ ASIM_PrintGifError(errcode);
++#else
+ if (EGifCloseFile(gif) == GIF_ERROR)
+ ASIM_PrintGifError();
++#endif
+ gif = NULL;
+ }
+ free( mapped_im );
+diff -Naurd libAfterImage-1.20.orig/import.c libAfterImage-1.20/import.c
+--- libAfterImage-1.20.orig/import.c 2016-05-01 11:44:19.000000000 +0300
++++ libAfterImage-1.20/import.c 2016-05-02 11:01:58.979496755 +0300
+@@ -2178,6 +2178,9 @@
+ int transparent = -1 ;
+ unsigned int y;
+ unsigned int width = 0, height = 0;
++#if (GIFLIB_MAJOR>=5)
++ int errcode;
++#endif
+ ColorMapObject *cmap = NULL ;
+
+ START_TIME(started);
+@@ -2186,7 +2189,11 @@
+
+ if ((fp = open_image_file(path)) == NULL)
+ return NULL;
++#if (GIFLIB_MAJOR>=5)
++ if( (gif = open_gif_read(fp, &errcode)) != NULL )
++#else
+ if( (gif = open_gif_read(fp)) != NULL )
++#endif
+ {
+ SavedImage *sp = NULL ;
+ int count = 0 ;
+@@ -2289,13 +2296,21 @@
+ }
+ free_gif_saved_images( sp, count );
+ }else if( status != GIF_OK )
++#if (GIFLIB_MAJOR>=5)
++ ASIM_PrintGifError(status);
++#else
+ ASIM_PrintGifError();
++#endif
+ else if( params->subimage == -1 )
+ show_error( "Image file \"%s\" does not have any valid image information.", path );
+ else
+ show_error( "Image file \"%s\" does not have subimage %d.", path, params->subimage );
+
++#if (GIFLIB_MAJOR>=5)
++ DGifCloseFile(gif, &errcode);
++#else
+ DGifCloseFile(gif);
++#endif
+ fclose( fp );
+ }
+ SHOW_TIME("image loading",started);
+diff -Naurd libAfterImage-1.20.orig/ungif.c libAfterImage-1.20/ungif.c
+--- libAfterImage-1.20.orig/ungif.c 2011-01-15 08:52:22.000000000 +0300
++++ libAfterImage-1.20/ungif.c 2016-05-02 16:03:57.590148737 +0300
+@@ -75,13 +75,21 @@
+ if( sp )
+ {
+ if (sp->ImageDesc.ColorMap)
++#if (GIFLIB_MAJOR>=5)
++ GifFreeMapObject(sp->ImageDesc.ColorMap);
++#else
+ FreeMapObject(sp->ImageDesc.ColorMap);
++#endif
+
+ if (sp->RasterBits)
+ free((char *)sp->RasterBits);
+
+ if (sp->ExtensionBlocks)
++#if (GIFLIB_MAJOR>=5)
++ GifFreeExtensions(sp->ExtensionBlockCount, sp->ExtensionBlocks);
++#else
+ FreeExtension(sp);
++#endif
+
+ if( !reusable )
+ free( sp );
+@@ -119,11 +127,19 @@
+ return ret;
+ }
+
++#if (GIFLIB_MAJOR>=5)
++GifFileType*
++open_gif_read( FILE *in_stream, int *errcode )
++{
++ return DGifOpen(in_stream, fread_gif, errcode);
++}
++#else
+ GifFileType*
+ open_gif_read( FILE *in_stream )
+ {
+ return DGifOpen(in_stream, fread_gif);
+ }
++#endif
+
+ int
+ get_gif_image_desc( GifFileType *gif, SavedImage *im )
+@@ -151,7 +167,11 @@
+ memcpy( &(im->ImageDesc), &(gif->Image), sizeof(GifImageDesc));
+ if( gif->Image.ColorMap )
+ {
++#if (GIFLIB_MAJOR>=5)
++ im->ImageDesc.ColorMap = GifMakeMapObject(gif->Image.ColorMap->ColorCount, NULL);
++#else
+ im->ImageDesc.ColorMap = MakeMapObject(gif->Image.ColorMap->ColorCount, NULL);
++#endif
+ fseek( gif->UserData, start_pos+9, SEEK_SET );
+ fread( im->ImageDesc.ColorMap->Colors, 1, gif->Image.ColorMap->ColorCount*3, gif->UserData);
+ fseek( gif->UserData, end_pos, SEEK_SET );
+@@ -166,6 +186,9 @@
+ {
+ GifRecordType RecordType;
+ GifByteType *ExtData;
++#if (GIFLIB_MAJOR>=5)
++ int ExtCode;
++#endif
+ SavedImage temp_save;
+ int curr_image = 0, ret_count = *ret_images ;
+ int status = GIF_OK;
+@@ -197,13 +220,23 @@
+ break;
+
+ case EXTENSION_RECORD_TYPE:
++#if (GIFLIB_MAJOR>=5)
++ status = DGifGetExtension(gif,&ExtCode,&ExtData);
++#else
+ status = DGifGetExtension(gif,&temp_save.Function,&ExtData);
++#endif
+ while (ExtData != NULL && status == GIF_OK )
+ {
+ /* Create an extension block with our data */
++#if (GIFLIB_MAJOR>=5)
++ if ((status = GifAddExtensionBlock(&temp_save.ExtensionBlockCount, &temp_save.ExtensionBlocks,
++ ExtCode, sizeof(ExtData), ExtData)) == GIF_OK)
++ status = DGifGetExtension(gif,&ExtCode,&ExtData);
++#else
+ if ((status = AddExtensionBlock(&temp_save, ExtData[0], (char*)&(ExtData[1]))) == GIF_OK)
+ status = DGifGetExtensionNext(gif, &ExtData);
+ temp_save.Function = 0;
++#endif
+ }
+ break;
+
+diff -Naurd libAfterImage-1.20.orig/ungif.h libAfterImage-1.20/ungif.h
+--- libAfterImage-1.20.orig/ungif.h 2011-01-15 08:52:22.000000000 +0300
++++ libAfterImage-1.20/ungif.h 2016-05-02 10:57:59.715983533 +0300
+@@ -7,11 +7,29 @@
+ extern "C" {
+ #endif
+
++#if ((GIFLIB_MAJOR==4) && (GIFLIB_MINOR>=2))
++static inline void PrintGifError(void) {
++ fprintf(stderr, "%s\n", GifErrorString());
++}
++#elif (GIFLIB_MAJOR>=5)
++static inline void PrintGifError(int code) {
++ fprintf(stderr, "%s\n", GifErrorString(code));
++}
++#endif
++
++#if (GIFLIB_MAJOR>=5)
++#ifdef __GNUC__
++#define ASIM_PrintGifError(code) do{ fprintf( stderr, "%s():%d:<%s> ",__FUNCTION__, __LINE__, path?path:"null" ); PrintGifError(code); }while(0)
++#else
++#define ASIM_PrintGifError(code) do{ PrintGifError(code); }while(0)
++#endif
++#else // (GIFLIB_MAJOR>=5)
+ #ifdef __GNUC__
+ #define ASIM_PrintGifError() do{ fprintf( stderr, "%s():%d:<%s> ",__FUNCTION__, __LINE__, path?path:"null" ); PrintGifError(); }while(0)
+ #else
+ #define ASIM_PrintGifError() do{ PrintGifError(); }while(0)
+ #endif
++#endif // (GIFLIB_MAJOR>=5)
+
+ #define GIF_GCE_DELAY_BYTE_LOW 1
+ #define GIF_GCE_DELAY_BYTE_HIGH 2
+@@ -24,7 +42,11 @@
+
+
+ int fread_gif( GifFileType *gif, GifByteType* buf, int len );
++#if (GIFLIB_MAJOR>=5)
++GifFileType* open_gif_read( FILE *in_stream, int *errcode );
++#else
+ GifFileType* open_gif_read( FILE *in_stream );
++#endif
+
+ int get_gif_image_desc( GifFileType *gif, SavedImage *im );
+