summaryrefslogtreecommitdiff
path: root/multimedia/mplayer-share/patches/patch-libmpdemux_demux__gif.c
diff options
context:
space:
mode:
Diffstat (limited to 'multimedia/mplayer-share/patches/patch-libmpdemux_demux__gif.c')
-rw-r--r--multimedia/mplayer-share/patches/patch-libmpdemux_demux__gif.c109
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);
+ }