From 5ba104b46e2e0f2e3f47e924d75799907cb73ab3 Mon Sep 17 00:00:00 2001 From: Jiyoun Park Date: Sun, 14 Apr 2013 20:49:45 +0900 Subject: [PATCH] * Evas: fix gif decoding bug related with background color. --- ChangeLog | 4 ++++ NEWS | 1 + .../evas/loaders/gif/evas_image_load_gif.c | 16 ++++++++++------ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 157bcc2bc1..f84d83c45e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-04-14 Jiyoun Park + + * Evas: fix gif decoding bug related with background color. + 2013-04-14 ChunEon Park * Evas: Don't update evas update area by the clipper if the image obj visible is changed. diff --git a/NEWS b/NEWS index 3e2c407fef..21a95a3f38 100644 --- a/NEWS +++ b/NEWS @@ -240,4 +240,5 @@ Fixes: * Edje entry: When cursor is located to each edge, entry now doesn't grab events for cursor movement. * Evas map: don't be crashed even if image size is 0. * Evas: Don't update evas update area by the clipper if the image obj visible is changed. + * Evas: fix gif decoding bug related with background color. diff --git a/src/modules/evas/loaders/gif/evas_image_load_gif.c b/src/modules/evas/loaders/gif/evas_image_load_gif.c index b39bd90522..6a53e219e8 100644 --- a/src/modules/evas/loaders/gif/evas_image_load_gif.c +++ b/src/modules/evas/loaders/gif/evas_image_load_gif.c @@ -36,6 +36,7 @@ struct _Gif_Frame int delay; int input; } frame_info; + int bg_val; }; static Eina_Bool evas_image_load_file_data_gif_internal(Image_Entry *ie, Image_Entry_Frame *frame, int *error); @@ -349,12 +350,6 @@ _evas_image_load_frame_image_data(Image_Entry *ie, GifFileType *gif, Image_Entry return EINA_FALSE; } - /* get the background value */ - r = cmap->Colors[bg].Red; - g = cmap->Colors[bg].Green; - b = cmap->Colors[bg].Blue; - bg_val = ARGB_JOIN(0xff, r, g, b); - per_inc = 100.0 / (((double)w) * h); per = 0.0; cur_h = scale_h; @@ -401,6 +396,8 @@ _evas_image_load_frame_image_data(Image_Entry *ie, GifFileType *gif, Image_Entry { gif_frame2 = (Gif_Frame *)(new_frame->info); disposal = gif_frame2->frame_info.disposal; + gif_frame->bg_val = gif_frame2->bg_val; + bg_val = gif_frame->bg_val; } switch(disposal) /* we only support disposal flag 0,1,2 */ { @@ -509,6 +506,13 @@ _evas_image_load_frame_image_data(Image_Entry *ie, GifFileType *gif, Image_Entry } else /* first frame decoding */ { + /* get the background value */ + r = cmap->Colors[bg].Red; + g = cmap->Colors[bg].Green; + b = cmap->Colors[bg].Blue; + bg_val = ARGB_JOIN(0xff, r, g, b); + gif_frame->bg_val = bg_val; + memset(ptr, 0, siz); /* fill background color */