* Evas: fix gif decoding bug related with background color.
authorJiyoun Park <jy0703.park@samsung.com>
Sun, 14 Apr 2013 11:49:45 +0000 (20:49 +0900)
committerJiyoun Park <jy0703.park@samsung.com>
Sun, 14 Apr 2013 11:49:45 +0000 (20:49 +0900)
ChangeLog
NEWS
src/modules/evas/loaders/gif/evas_image_load_gif.c

index 157bcc2..f84d83c 100644 (file)
--- 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 3e2c407..21a95a3 100644 (file)
--- 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.
 
index b39bd90..6a53e21 100644 (file)
@@ -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 */