Upstream support for giflib >= 5.1.
DGifCloseFile now takes two arugments. The second argument appears to be an optional out-param with more information on failures. ( c.f. http://giflib.sourceforge.net/gif_lib.html ) PS 1 is the original patch we received from google3. I've updated it a bit to be pedantically legal C++98. BUG=skia: Review URL: https://codereview.chromium.org/860853003
This commit is contained in:
parent
e1a828c555
commit
59c69479d4
@ -229,6 +229,15 @@ static void sanitize_indexed_bitmap(SkBitmap* bm) {
|
||||
}
|
||||
}
|
||||
|
||||
int close_gif(GifFileType*); // This function is a template argument, so can't be static.
|
||||
int close_gif(GifFileType* gif) {
|
||||
#if GIFLIB_MAJOR < 5 || (GIFLIB_MAJOR == 5 && GIFLIB_MINOR == 0)
|
||||
return DGifCloseFile(gif);
|
||||
#else
|
||||
return DGifCloseFile(gif, NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
SkImageDecoder::Result SkGIFImageDecoder::onDecode(SkStream* sk_stream, SkBitmap* bm, Mode mode) {
|
||||
#if GIFLIB_MAJOR < 5
|
||||
GifFileType* gif = DGifOpen(sk_stream, DecodeCallBackProc);
|
||||
@ -239,7 +248,7 @@ SkImageDecoder::Result SkGIFImageDecoder::onDecode(SkStream* sk_stream, SkBitmap
|
||||
return error_return(*bm, "DGifOpen");
|
||||
}
|
||||
|
||||
SkAutoTCallIProc<GifFileType, DGifCloseFile> acp(gif);
|
||||
SkAutoTCallIProc<GifFileType, close_gif> acp(gif);
|
||||
|
||||
SavedImage temp_save;
|
||||
temp_save.ExtensionBlocks=NULL;
|
||||
|
@ -16,6 +16,10 @@
|
||||
|
||||
#include "gif_lib.h"
|
||||
|
||||
#if GIFLIB_MAJOR < 5 || (GIFLIB_MAJOR == 5 && GIFLIB_MINOR == 0)
|
||||
#define DGifCloseFile(a, b) DGifCloseFile(a)
|
||||
#endif
|
||||
|
||||
class SkGIFMovie : public SkMovie {
|
||||
public:
|
||||
SkGIFMovie(SkStream* stream);
|
||||
@ -50,7 +54,7 @@ SkGIFMovie::SkGIFMovie(SkStream* stream)
|
||||
|
||||
if (DGifSlurp(fGIF) != GIF_OK)
|
||||
{
|
||||
DGifCloseFile(fGIF);
|
||||
DGifCloseFile(fGIF, NULL);
|
||||
fGIF = NULL;
|
||||
}
|
||||
fCurrIndex = -1;
|
||||
@ -60,7 +64,7 @@ SkGIFMovie::SkGIFMovie(SkStream* stream)
|
||||
SkGIFMovie::~SkGIFMovie()
|
||||
{
|
||||
if (fGIF)
|
||||
DGifCloseFile(fGIF);
|
||||
DGifCloseFile(fGIF, NULL);
|
||||
}
|
||||
|
||||
static SkMSec savedimage_duration(const SavedImage* image)
|
||||
|
Loading…
Reference in New Issue
Block a user