+#if defined(GIFLIB_MAJOR) && GIFLIB_MAJOR >= 5
+#define myDGifOpen(userPtr, readFunc, Error) DGifOpen((userPtr), (readFunc), (Error))
+#define myEGifOpen(userPtr, readFunc, Error) EGifOpen((userPtr), (readFunc), (Error))
+#define myGifError(gif) ((gif)->Error)
+#define MakeMapObject GifMakeMapObject
+#define FreeMapObject GifFreeMapObject
+
+#define gif_mutex_lock()
+#define gif_mutex_unlock()
+#else
+static GifFileType *
+myDGifOpen(void *userPtr, InputFunc readFunc, int *error) {
+ GifFileType *result = DGifOpen(userPtr, readFunc);
+ if (!result)
+ *error = GifLastError();
+
+ return result;
+}
+static GifFileType *
+myEGifOpen(void *userPtr, OutputFunc outputFunc, int *error) {
+ GifFileType *result = EGifOpen(userPtr, outputFunc);
+ if (!result)
+ *error = GifLastError();
+
+ return result;
+}
+#define myGifError(gif) GifLastError()
+
+#define gif_mutex_lock() i_mutex_lock(mutex)
+#define gif_mutex_unlock() i_mutex_unlock(mutex)
+#define NEED_MUTEX
+#endif
+