evas: move flags and attribute around.

This commit is contained in:
Cedric Bail 2013-04-25 15:05:18 +09:00
parent 2b61da5a5a
commit c5b0d28d73
9 changed files with 77 additions and 58 deletions

View File

@ -321,9 +321,9 @@ _evas_cache_image_async_heavy(void *data)
current->channel = pchannel; current->channel = pchannel;
// check the unload cancel flag // check the unload cancel flag
LKL(current->lock_cancel); LKL(current->lock_cancel);
if (current->unload_cancel) if (current->flags.unload_cancel)
{ {
current->unload_cancel = EINA_FALSE; current->flags.unload_cancel = EINA_FALSE;
cache->func.surface_delete(current); cache->func.surface_delete(current);
current->flags.loaded = 0; current->flags.loaded = 0;
current->flags.preload_done = 0; current->flags.preload_done = 0;
@ -963,7 +963,7 @@ evas_cache_image_load_data(Image_Entry *im)
Eina_Bool preload = EINA_FALSE; Eina_Bool preload = EINA_FALSE;
int error = EVAS_LOAD_ERROR_NONE; int error = EVAS_LOAD_ERROR_NONE;
if ((im->flags.loaded) && (!im->flags.animated)) return error; if ((im->flags.loaded) && (!im->animated.animated)) return error;
if (im->preload) if (im->preload)
{ {
preload = EINA_TRUE; preload = EINA_TRUE;
@ -987,7 +987,7 @@ evas_cache_image_load_data(Image_Entry *im)
LKU(wakeup); LKU(wakeup);
} }
if ((im->flags.loaded) && (!im->flags.animated)) return error; if ((im->flags.loaded) && (!im->animated.animated)) return error;
LKL(im->lock); LKL(im->lock);
im->flags.in_progress = EINA_TRUE; im->flags.in_progress = EINA_TRUE;
@ -1015,7 +1015,7 @@ evas_cache_image_unload_data(Image_Entry *im)
LKL(im->lock_cancel); LKL(im->lock_cancel);
if (LKT(im->lock) == EINA_FALSE) /* can't get image lock - busy async load */ if (LKT(im->lock) == EINA_FALSE) /* can't get image lock - busy async load */
{ {
im->unload_cancel = EINA_TRUE; im->flags.unload_cancel = EINA_TRUE;
LKU(im->lock_cancel); LKU(im->lock_cancel);
return; return;
} }

View File

@ -935,7 +935,7 @@ evas_cache2_image_load_data(Image_Entry *ie)
{ {
int error = EVAS_LOAD_ERROR_NONE; int error = EVAS_LOAD_ERROR_NONE;
if ((ie->flags.loaded) && (!ie->flags.animated)) if ((ie->flags.loaded) && (!ie->animated.animated))
return error; return error;
ie->flags.in_progress = EINA_TRUE; ie->flags.in_progress = EINA_TRUE;

View File

@ -203,11 +203,11 @@ _evas_common_rgba_image_delete(Image_Entry *ie)
// if (ie->data1) evas_cserve2_image_free(ie); // if (ie->data1) evas_cserve2_image_free(ie);
#endif #endif
if (ie->frames) if (ie->animated.frames)
{ {
Eina_List *l; Eina_List *l;
Image_Entry_Frame *frame; Image_Entry_Frame *frame;
EINA_LIST_FOREACH(ie->frames, l, frame) EINA_LIST_FOREACH(ie->animated.frames, l, frame)
{ {
if (frame) if (frame)
{ {

View File

@ -849,7 +849,7 @@ evas_common_rgba_image_scalecache_do_cbs(Image_Entry *ie, RGBA_Image *dst,
didpop = 1; didpop = 1;
} }
} }
if (sci->im && !ie->flags.animated) if (sci->im && !ie->animated.animated)
{ {
if (!didpop) if (!didpop)
{ {

View File

@ -339,9 +339,9 @@ _image_opened_cb(void *data, const void *msg_received)
ie->w = msg->image.w; ie->w = msg->image.w;
ie->h = msg->image.h; ie->h = msg->image.h;
ie->flags.alpha = msg->image.alpha; ie->flags.alpha = msg->image.alpha;
ie->loop_hint = msg->image.loop_hint; ie->animated.loop_hint = msg->image.loop_hint;
ie->loop_count = msg->image.loop_count; ie->animated.loop_count = msg->image.loop_count;
ie->frame_count = msg->image.frame_count; ie->animated.frame_count = msg->image.frame_count;
} }
static void static void

View File

@ -352,6 +352,8 @@ typedef unsigned short DATA16;
typedef unsigned char DATA8; typedef unsigned char DATA8;
typedef struct _Image_Entry Image_Entry; typedef struct _Image_Entry Image_Entry;
typedef struct _Image_Entry_Property Image_Entry_Property;
typedef struct _Image_Entry_Animated Image_Entry_Animated;
typedef struct _Image_Entry_Flags Image_Entry_Flags; typedef struct _Image_Entry_Flags Image_Entry_Flags;
typedef struct _Image_Entry_Frame Image_Entry_Frame; typedef struct _Image_Entry_Frame Image_Entry_Frame;
typedef struct _Image_Timestamp Image_Timestamp; typedef struct _Image_Timestamp Image_Timestamp;
@ -514,24 +516,24 @@ struct _RGBA_Image_Loadopts
struct _Image_Entry_Flags struct _Image_Entry_Flags
{ {
Eina_Bool loaded : 1; Eina_Bool loaded : 1;
Eina_Bool in_progress : 1; Eina_Bool in_progress : 1;
Eina_Bool dirty : 1; Eina_Bool dirty : 1;
Eina_Bool activ : 1; Eina_Bool activ : 1;
Eina_Bool need_data : 1; Eina_Bool need_data : 1;
Eina_Bool lru_nodata : 1; Eina_Bool lru_nodata : 1;
Eina_Bool cached : 1; Eina_Bool cached : 1;
Eina_Bool alpha : 1; Eina_Bool alpha : 1;
Eina_Bool lru : 1; Eina_Bool lru : 1;
Eina_Bool alpha_sparse : 1; Eina_Bool alpha_sparse : 1;
Eina_Bool preload_done : 1; Eina_Bool preload_done : 1;
Eina_Bool delete_me : 1; Eina_Bool delete_me : 1;
Eina_Bool pending : 1; Eina_Bool pending : 1;
Eina_Bool animated : 1; Eina_Bool rotated : 1;
Eina_Bool rotated : 1; Eina_Bool unload_cancel : 1;
}; };
struct _Image_Entry_Frame struct _Image_Entry_Frame
@ -542,6 +544,17 @@ struct _Image_Entry_Frame
Eina_Bool loaded : 1; Eina_Bool loaded : 1;
}; };
struct _Image_Entry_Animated
{
Eina_List *frames;
Evas_Image_Animated_Loop_Hint loop_hint;
int frame_count;
int loop_count;
int cur_frame;
Eina_Bool animated : 1;
};
struct _Evas_Cache_Target struct _Evas_Cache_Target
{ {
EINA_INLIST; EINA_INLIST;
@ -559,6 +572,16 @@ struct _Image_Timestamp
#endif #endif
}; };
struct _Image_Entry_Property
{
unsigned int w;
unsigned int h;
unsigned char scale;
Eina_Bool alpha;
};
struct _Image_Entry struct _Image_Entry
{ {
EINA_INLIST; EINA_INLIST;
@ -584,13 +607,14 @@ struct _Image_Entry
RGBA_Pipe *pipe; RGBA_Pipe *pipe;
#endif #endif
unsigned char scale;
RGBA_Image_Loadopts load_opts; RGBA_Image_Loadopts load_opts;
int space; int space;
unsigned int w; unsigned int w;
unsigned int h; unsigned int h;
unsigned char scale;
struct struct
{ {
unsigned int w; unsigned int w;
@ -605,7 +629,6 @@ struct _Image_Entry
LK(lock); LK(lock);
LK(lock_cancel); LK(lock_cancel);
Eina_Bool unload_cancel : 1;
Image_Entry_Flags flags; Image_Entry_Flags flags;
Evas_Image_Scale_Hint scale_hint; Evas_Image_Scale_Hint scale_hint;
@ -619,11 +642,7 @@ struct _Image_Entry
int load_error; int load_error;
/* for animation feature */ /* for animation feature */
int frame_count; Image_Entry_Animated animated;
Evas_Image_Animated_Loop_Hint loop_hint;
int loop_count;
int cur_frame;
Eina_List *frames;
}; };
struct _Engine_Image_Entry struct _Engine_Image_Entry

View File

@ -556,7 +556,7 @@ evas_gl_common_image_update(Evas_Engine_GL_Context *gc, Evas_GL_Image *im)
{ {
case EVAS_COLORSPACE_ARGB8888: case EVAS_COLORSPACE_ARGB8888:
if ((im->tex) && if ((im->tex) &&
((im->dirty) || (ie->flags.animated))) ((im->dirty) || (ie->animated.animated)))
{ {
evas_cache_image_load_data(&im->im->cache_entry); evas_cache_image_load_data(&im->im->cache_entry);
evas_gl_common_texture_update(im->tex, im->im); evas_gl_common_texture_update(im->tex, im->im);

View File

@ -3074,7 +3074,7 @@ eng_image_animated_get(void *data EINA_UNUSED, void *image)
im = (Image_Entry *)gim->im; im = (Image_Entry *)gim->im;
if (!im) return EINA_FALSE; if (!im) return EINA_FALSE;
return im->flags.animated; return im->animated.animated;
} }
static int static int
@ -3087,8 +3087,8 @@ eng_image_animated_frame_count_get(void *data EINA_UNUSED, void *image)
im = (Image_Entry *)gim->im; im = (Image_Entry *)gim->im;
if (!im) return -1; if (!im) return -1;
if (!im->flags.animated) return -1; if (!im->animated.animated) return -1;
return im->frame_count; return im->animated.frame_count;
} }
static Evas_Image_Animated_Loop_Hint static Evas_Image_Animated_Loop_Hint
@ -3101,8 +3101,8 @@ eng_image_animated_loop_type_get(void *data EINA_UNUSED, void *image)
im = (Image_Entry *)gim->im; im = (Image_Entry *)gim->im;
if (!im) return EVAS_IMAGE_ANIMATED_HINT_NONE; if (!im) return EVAS_IMAGE_ANIMATED_HINT_NONE;
if (!im->flags.animated) return EVAS_IMAGE_ANIMATED_HINT_NONE; if (!im->animated.animated) return EVAS_IMAGE_ANIMATED_HINT_NONE;
return im->loop_hint; return im->animated.loop_hint;
} }
static int static int
@ -3115,8 +3115,8 @@ eng_image_animated_loop_count_get(void *data EINA_UNUSED, void *image)
im = (Image_Entry *)gim->im; im = (Image_Entry *)gim->im;
if (!im) return -1; if (!im) return -1;
if (!im->flags.animated) return -1; if (!im->animated.animated) return -1;
return im->loop_count; return im->animated.loop_count;
} }
static double static double
@ -3129,7 +3129,7 @@ eng_image_animated_frame_duration_get(void *data EINA_UNUSED, void *image, int s
im = (Image_Entry *)gim->im; im = (Image_Entry *)gim->im;
if (!im) return -1; if (!im) return -1;
if (!im->flags.animated) return -1; if (!im->animated.animated) return -1;
return evas_common_load_rgba_image_frame_duration_from_file(im, start_frame, frame_num); return evas_common_load_rgba_image_frame_duration_from_file(im, start_frame, frame_num);
} }
@ -3143,10 +3143,10 @@ eng_image_animated_frame_set(void *data EINA_UNUSED, void *image, int frame_inde
im = (Image_Entry *)gim->im; im = (Image_Entry *)gim->im;
if (!im) return EINA_FALSE; if (!im) return EINA_FALSE;
if (!im->flags.animated) return EINA_FALSE; if (!im->animated.animated) return EINA_FALSE;
if (im->cur_frame == frame_index) return EINA_FALSE; if (im->animated.cur_frame == frame_index) return EINA_FALSE;
im->cur_frame = frame_index; im->animated.cur_frame = frame_index;
return EINA_TRUE; return EINA_TRUE;
} }

View File

@ -1711,7 +1711,7 @@ eng_image_animated_get(void *data EINA_UNUSED, void *image)
if (!image) return EINA_FALSE; if (!image) return EINA_FALSE;
im = image; im = image;
return im->flags.animated; return im->animated.animated;
} }
static int static int
@ -1721,8 +1721,8 @@ eng_image_animated_frame_count_get(void *data EINA_UNUSED, void *image)
if (!image) return -1; if (!image) return -1;
im = image; im = image;
if (!im->flags.animated) return -1; if (!im->animated.animated) return -1;
return im->frame_count; return im->animated.frame_count;
} }
static Evas_Image_Animated_Loop_Hint static Evas_Image_Animated_Loop_Hint
@ -1732,8 +1732,8 @@ eng_image_animated_loop_type_get(void *data EINA_UNUSED, void *image)
if (!image) return EVAS_IMAGE_ANIMATED_HINT_NONE; if (!image) return EVAS_IMAGE_ANIMATED_HINT_NONE;
im = image; im = image;
if (!im->flags.animated) return EVAS_IMAGE_ANIMATED_HINT_NONE; if (!im->animated.animated) return EVAS_IMAGE_ANIMATED_HINT_NONE;
return im->loop_hint; return im->animated.loop_hint;
} }
static int static int
@ -1743,8 +1743,8 @@ eng_image_animated_loop_count_get(void *data EINA_UNUSED, void *image)
if (!image) return -1; if (!image) return -1;
im = image; im = image;
if (!im->flags.animated) return -1; if (!im->animated.animated) return -1;
return im->loop_count; return im->animated.loop_count;
} }
static double static double
@ -1754,7 +1754,7 @@ eng_image_animated_frame_duration_get(void *data EINA_UNUSED, void *image, int s
if (!image) return -1; if (!image) return -1;
im = image; im = image;
if (!im->flags.animated) return -1; if (!im->animated.animated) return -1;
return evas_common_load_rgba_image_frame_duration_from_file(im, start_frame, frame_num); return evas_common_load_rgba_image_frame_duration_from_file(im, start_frame, frame_num);
} }
@ -1765,9 +1765,9 @@ eng_image_animated_frame_set(void *data EINA_UNUSED, void *image, int frame_inde
if (!image) return EINA_FALSE; if (!image) return EINA_FALSE;
im = image; im = image;
if (!im->flags.animated) return EINA_FALSE; if (!im->animated.animated) return EINA_FALSE;
if (im->cur_frame == frame_index) return EINA_FALSE; if (im->animated.cur_frame == frame_index) return EINA_FALSE;
im->cur_frame = frame_index; im->animated.cur_frame = frame_index;
return EINA_TRUE; return EINA_TRUE;
} }