From: Jiyoun Park <jy0703.park@samsung.com>

Sometimes, gif loader can miss some previous frame.
In that case, display can be dirty.
If frame N loaded without N-1 make these problem.
I fixed this problem. 
And I modified wrong document.



SVN revision: 62712
This commit is contained in:
Jiyoun Park 2011-08-23 06:08:02 +00:00 committed by Carsten Haitzler
parent 19124f1282
commit 9cce5f3959
2 changed files with 25 additions and 8 deletions

View File

@ -7205,7 +7205,7 @@ EAPI Eina_Bool evas_object_image_extension_can_load_fast_get(const char *file);
* @endcode
*
* @see evas_object_image_animated_get()
* @see evas_object_image_animated_frame_num_get()
* @see evas_object_image_animated_frame_count_get()
* @see evas_object_image_animated_loop_type_get()
* @see evas_object_image_animated_loop_count_get()
* @see evas_object_image_animated_frame_duration_get()
@ -7223,7 +7223,7 @@ EAPI Eina_Bool evas_object_image_animated_get(const Evas_Object *obj);
* This returns total number of frames the image object supports (if animated)
*
* @see evas_object_image_animated_get()
* @see evas_object_image_animated_frame_num_get()
* @see evas_object_image_animated_frame_count_get()
* @see evas_object_image_animated_loop_type_get()
* @see evas_object_image_animated_loop_count_get()
* @see evas_object_image_animated_frame_duration_get()
@ -7248,7 +7248,7 @@ EAPI int evas_object_image_animated_frame_count_get(const Evas_Object *obj);
* The default type is EVAS_IMAGE_ANIMATED_HINT_LOOP.
*
* @see evas_object_image_animated_get()
* @see evas_object_image_animated_frame_num_get()
* @see evas_object_image_animated_frame_count_get()
* @see evas_object_image_animated_loop_type_get()
* @see evas_object_image_animated_loop_count_get()
* @see evas_object_image_animated_frame_duration_get()
@ -7271,7 +7271,7 @@ EAPI Evas_Image_Animated_Loop_Hint evas_object_image_animated_loop_type_get(cons
* the number of times it loops).
*
* @see evas_object_image_animated_get()
* @see evas_object_image_animated_frame_num_get()
* @see evas_object_image_animated_frame_count_get()
* @see evas_object_image_animated_loop_type_get()
* @see evas_object_image_animated_loop_count_get()
* @see evas_object_image_animated_frame_duration_get()
@ -7295,7 +7295,7 @@ EAPI int evas_object_image_animated_loop_count_get(const Evas_Object *obj);
* frame2's duration
*
* @see evas_object_image_animated_get()
* @see evas_object_image_animated_frame_num_get()
* @see evas_object_image_animated_frame_count_get()
* @see evas_object_image_animated_loop_type_get()
* @see evas_object_image_animated_loop_count_get()
* @see evas_object_image_animated_frame_duration_get()
@ -7314,7 +7314,7 @@ EAPI double evas_object_image_animated_frame_duration_get(const Evas_Object *obj
* frame.
*
* @see evas_object_image_animated_get()
* @see evas_object_image_animated_frame_num_get()
* @see evas_object_image_animated_frame_count_get()
* @see evas_object_image_animated_loop_type_get()
* @see evas_object_image_animated_loop_count_get()
* @see evas_object_image_animated_frame_duration_get()

View File

@ -294,15 +294,32 @@ _evas_image_load_frame_image_data(Image_Entry *ie, GifFileType *gif, Image_Entry
DATA32 *ptr_src;
Image_Entry_Frame *new_frame = NULL;
int cur_frame = frame->index;
int start_frame = 1;
int j = 0;
if (!_find_close_frame(ie, cur_frame, &new_frame))
if (_find_close_frame(ie, cur_frame, &new_frame))
start_frame = new_frame->index + 1;
if ((start_frame < 1) || (start_frame > cur_frame))
{
if (!evas_image_load_specific_frame(ie, ie->file, cur_frame-1, error))
*error = EVAS_LOAD_ERROR_CORRUPT_FILE;
goto error;
}
/* load previous frame of cur_frame */
for (j = start_frame; j < cur_frame ; j++)
{
if (!evas_image_load_specific_frame(ie, ie->file, j, error))
{
*error = EVAS_LOAD_ERROR_CORRUPT_FILE;
goto error;
}
}
if (!_find_frame(ie, cur_frame - 1, &new_frame))
{
*error = EVAS_LOAD_ERROR_CORRUPT_FILE;
goto error;
}
else
{
ptr_src = new_frame->data;