diff options
Diffstat (limited to 'multimedia/mplayer-share/patches/patch-libmpdemux_demux__gif.c')
-rw-r--r-- | multimedia/mplayer-share/patches/patch-libmpdemux_demux__gif.c | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/multimedia/mplayer-share/patches/patch-libmpdemux_demux__gif.c b/multimedia/mplayer-share/patches/patch-libmpdemux_demux__gif.c new file mode 100644 index 00000000000..640c196d6a3 --- /dev/null +++ b/multimedia/mplayer-share/patches/patch-libmpdemux_demux__gif.c @@ -0,0 +1,109 @@ +$NetBSD: patch-libmpdemux_demux__gif.c,v 1.1 2013/07/06 07:07:18 ryoon Exp $ + +* Fix build with giflib 5.0. + +--- libmpdemux/demux_gif.c.orig 2010-12-12 10:37:15.000000000 +0000 ++++ libmpdemux/demux_gif.c +@@ -45,6 +45,18 @@ typedef struct { + + #define GIF_SIGNATURE (('G' << 16) | ('I' << 8) | 'F') + ++/* from util/qprintf.c of giflib 5.0.4 */ ++void ++PrintGifError(int ErrorCode) ++{ ++ char *Err = GifErrorString(ErrorCode); ++ ++ if (Err != NULL) ++ fprintf(stderr, "GIF-LIB error: %s.\n", Err); ++ else ++ fprintf(stderr, "GIF-LIB undefined error %d.\n", ErrorCode); ++} ++ + #ifndef CONFIG_GIF_TVT_HACK + // not supported by certain versions of the library + static int my_read_gif(GifFileType *gif, uint8_t *buf, int len) +@@ -94,14 +106,14 @@ static int demux_gif_fill_buffer(demuxer + + while (type != IMAGE_DESC_RECORD_TYPE) { + if (DGifGetRecordType(gif, &type) == GIF_ERROR) { +- PrintGifError(); ++ PrintGifError(gif->Error); + return 0; // oops + } + if (type == TERMINATE_RECORD_TYPE) + return 0; // eof + if (type == SCREEN_DESC_RECORD_TYPE) { + if (DGifGetScreenDesc(gif) == GIF_ERROR) { +- PrintGifError(); ++ PrintGifError(gif->Error); + return 0; // oops + } + } +@@ -109,7 +121,7 @@ static int demux_gif_fill_buffer(demuxer + int code; + unsigned char *p = NULL; + if (DGifGetExtension(gif, &code, &p) == GIF_ERROR) { +- PrintGifError(); ++ PrintGifError(gif->Error); + return 0; // oops + } + if (code == 0xF9) { +@@ -138,7 +150,7 @@ static int demux_gif_fill_buffer(demuxer + comments[length] = 0; + printf("%s", comments); + if (DGifGetExtensionNext(gif, &p) == GIF_ERROR) { +- PrintGifError(); ++ PrintGifError(gif->Error); + return 0; // oops + } + } +@@ -146,7 +158,7 @@ static int demux_gif_fill_buffer(demuxer + } + while (p != NULL) { + if (DGifGetExtensionNext(gif, &p) == GIF_ERROR) { +- PrintGifError(); ++ PrintGifError(gif->Error); + return 0; // oops + } + } +@@ -154,7 +166,7 @@ static int demux_gif_fill_buffer(demuxer + } + + if (DGifGetImageDesc(gif) == GIF_ERROR) { +- PrintGifError(); ++ PrintGifError(gif->Error); + return 0; // oops + } + +@@ -167,7 +179,7 @@ static int demux_gif_fill_buffer(demuxer + memset(dp->buffer, gif->SBackGroundColor, priv->w * priv->h); + + if (DGifGetLine(gif, buf, len) == GIF_ERROR) { +- PrintGifError(); ++ PrintGifError(gif->Error); + free(buf); + return 0; // oops + } +@@ -257,10 +269,10 @@ static demuxer_t* demux_open_gif(demuxer + lseek(demuxer->stream->fd, 0, SEEK_SET); + gif = DGifOpenFileHandle(demuxer->stream->fd); + #else +- gif = DGifOpen(demuxer->stream, my_read_gif); ++ gif = DGifOpen(demuxer->stream, my_read_gif, NULL); + #endif + if (!gif) { +- PrintGifError(); ++ PrintGifError(gif->Error); + free(priv); + return NULL; + } +@@ -302,7 +314,7 @@ static void demux_close_gif(demuxer_t* d + gif_priv_t *priv = demuxer->priv; + if (!priv) return; + if (priv->gif && DGifCloseFile(priv->gif) == GIF_ERROR) +- PrintGifError(); ++ PrintGifError(priv->gif->Error); + free(priv->refimg); + free(priv); + } |