--- contrib/isf-qt/src/isfqt.cpp.orig	2012-02-18 16:28:01 UTC
+++ contrib/isf-qt/src/isfqt.cpp
@@ -489,7 +489,11 @@ QByteArray Stream::writerGif( const Draw
 
   // Open the gif file
   gifData.open( QIODevice::WriteOnly );
+#if GIFLIB_MAJOR >= 5
+  gifImage = EGifOpen( (void*)&gifData, GifWriteToByteArray, NULL );
+#else
   gifImage = EGifOpen( (void*)&gifData, GifWriteToByteArray );
+#endif
   if( gifImage == 0 )
   {
     qWarning() << "Couldn't initialize gif library!";
@@ -503,7 +507,11 @@ QByteArray Stream::writerGif( const Draw
     numColors = 256;
   }
 
+#if GIFLIB_MAJOR >= 5
+  cmap = GifMakeMapObject( numColors, NULL );
+#else
   cmap = MakeMapObject( numColors, NULL );
+#endif
   if( cmap == 0 && isfImage.numColors() > 1 )
   {
     qWarning() << "Couldn't create map object for gif conversion (colors:" << isfImage.numColors() << ")!";
@@ -576,7 +584,11 @@ QByteArray Stream::writerGif( const Draw
   else
   {
     // Write the extension
+#if GIFLIB_MAJOR >= 5
+    if( EGifPutExtensionLeader( gifImage, COMMENT_EXT_FUNC_CODE ) == GIF_ERROR )
+#else
     if( EGifPutExtensionFirst( gifImage, COMMENT_EXT_FUNC_CODE, MAX_GIF_BYTE, isfData.left( MAX_GIF_BYTE ).data() ) == GIF_ERROR )
+#endif
     {
       qWarning() << "EGifPutExtensionFirst failed!";
       goto writeError;
@@ -590,7 +602,11 @@ QByteArray Stream::writerGif( const Draw
     // Write all the full data blocks
     while( length >= MAX_GIF_BYTE )
     {
+#if GIFLIB_MAJOR >= 5
+      if( EGifPutExtensionBlock( gifImage, MAX_GIF_BYTE, isfData.mid( pos, MAX_GIF_BYTE ).data() ) == GIF_ERROR )
+#else
       if( EGifPutExtensionNext( gifImage, 0, MAX_GIF_BYTE, isfData.mid( pos, MAX_GIF_BYTE ).data() ) == GIF_ERROR )
+#endif
       {
         qWarning() << "EGifPutExtensionNext failed!";
         goto writeError;
@@ -603,7 +619,11 @@ QByteArray Stream::writerGif( const Draw
     // Write the last block
     if( length > 0 )
     {
+#if GIFLIB_MAJOR >= 5
+      if( EGifPutExtensionTrailer( gifImage ) == GIF_ERROR )
+#else
       if( EGifPutExtensionLast( gifImage, 0, length, isfData.mid( pos, MAX_GIF_BYTE ).data() ) == GIF_ERROR )
+#endif
       {
         qWarning() << "EGifPutExtensionLast (n) failed!";
         goto writeError;
@@ -611,7 +631,11 @@ QByteArray Stream::writerGif( const Draw
     }
     else
     {
+#if GIFLIB_MAJOR >= 5
+      if( EGifPutExtensionTrailer( gifImage ) == GIF_ERROR )
+#else
       if( EGifPutExtensionLast( gifImage, 0, 0, 0 ) == GIF_ERROR )
+#endif
       {
         qWarning() << "EGifPutExtensionLast (0) failed!";
         goto writeError;
@@ -623,13 +647,21 @@ QByteArray Stream::writerGif( const Draw
 
 writeError:
   // Clean up the GIF converter etc
+#if GIFLIB_MAJOR == 5 && GIFLIB_MINOR >= 1 || GIFLIB_MAJOR > 5
+  EGifCloseFile( gifImage, NULL );
+#else
   EGifCloseFile( gifImage );
+#endif
+#if GIFLIB_MAJOR >= 5
+  GifFreeMapObject( cmap );
+#else
   FreeMapObject( cmap );
+#endif
   gifData.close();
 
   if( gifError )
   {
-    qWarning() << "GIF error code:" << GifLastError();
+    qWarning() << "GIF error";
   }
   else
   {
