edje - reduce memory footprint by rearranging structs and types

this should cut some memory used by edje by using smaller types like
shorts instead of ints where we just dont need a full int range and
short will do, and re-ordering in memory data soit packs better when
accoutning for alignment
This commit is contained in:
Carsten Haitzler 2016-07-04 14:59:59 +09:00
parent ad3b460e6a
commit e2d7c11665
7 changed files with 180 additions and 182 deletions

View File

@ -868,7 +868,7 @@ _edje_recalc(Edje *ed)
void void
_edje_recalc_do(Edje *ed) _edje_recalc_do(Edje *ed)
{ {
unsigned int i; unsigned short i;
Eina_Bool need_calc; Eina_Bool need_calc;
// XXX: dont need this with current smart calc infra. remove me later // XXX: dont need this with current smart calc infra. remove me later

View File

@ -793,7 +793,7 @@ _edje_fix_parts_id(Edje *ed)
*/ */
unsigned int i; unsigned int i;
int correct_id; int correct_id;
unsigned int count; unsigned short count;
//printf("FIXING PARTS ID \n"); //printf("FIXING PARTS ID \n");
@ -816,7 +816,7 @@ _edje_fix_parts_id(Edje *ed)
} }
/* If we have removed some parts realloc table_parts */ /* If we have removed some parts realloc table_parts */
count = ed->collection->parts_count; count = (unsigned short)ed->collection->parts_count;
if (count != ed->table_parts_size) if (count != ed->table_parts_size)
{ {
ed->table_parts = realloc(ed->table_parts, sizeof(Edje_Real_Part *) * count); ed->table_parts = realloc(ed->table_parts, sizeof(Edje_Real_Part *) * count);
@ -3002,7 +3002,7 @@ EAPI Eina_List *
edje_edit_parts_list_get(Evas_Object *obj) edje_edit_parts_list_get(Evas_Object *obj)
{ {
Eina_List *parts = NULL; Eina_List *parts = NULL;
unsigned int i; unsigned short i;
GET_ED_OR_RETURN(NULL); GET_ED_OR_RETURN(NULL);
@ -3069,6 +3069,7 @@ _edje_edit_real_part_add(Evas_Object *obj, const char *name, Edje_Part_Type type
GET_ED_OR_RETURN(EINA_FALSE); GET_ED_OR_RETURN(EINA_FALSE);
if (ed->table_parts_size == 0xffff) return EINA_FALSE;
//printf("ADD PART: %s [type: %d]\n", name, type); //printf("ADD PART: %s [type: %d]\n", name, type);
/* Check if part already exists */ /* Check if part already exists */
@ -3273,7 +3274,7 @@ edje_edit_part_del(Evas_Object *obj, const char *part)
Edje_Part *ep; Edje_Part *ep;
unsigned int k; unsigned int k;
unsigned int id; unsigned int id;
unsigned int i; unsigned short i;
GET_EED_OR_RETURN(EINA_FALSE); GET_EED_OR_RETURN(EINA_FALSE);
GET_RP_OR_RETURN(EINA_FALSE); GET_RP_OR_RETURN(EINA_FALSE);
@ -3484,7 +3485,7 @@ edje_edit_part_above_get(Evas_Object *obj, const char *part)
GET_RP_OR_RETURN(0); GET_RP_OR_RETURN(0);
if ((unsigned int)rp->part->id >= ed->table_parts_size - 1) return 0; if ((unsigned short)rp->part->id >= ed->table_parts_size - 1) return 0;
next = ed->table_parts[(rp->part->id + 1) % ed->table_parts_size]; next = ed->table_parts[(rp->part->id + 1) % ed->table_parts_size];
@ -3575,7 +3576,7 @@ edje_edit_part_restack_above(Evas_Object *obj, const char *part)
//printf("RESTACK PART: %s ABOVE\n", part); //printf("RESTACK PART: %s ABOVE\n", part);
if ((unsigned int)rp->part->id >= ed->table_parts_size - 1) return EINA_FALSE; if ((unsigned short)rp->part->id >= ed->table_parts_size - 1) return EINA_FALSE;
group = ed->collection; group = ed->collection;
@ -8284,7 +8285,7 @@ edje_edit_state_text_set(Evas_Object *obj, const char *part, const char *state,
{ {
Edje_Part_Description_Text *txt; Edje_Part_Description_Text *txt;
Edje_Real_Part *real; Edje_Real_Part *real;
unsigned int i; unsigned short i;
if (!text) if (!text)
return EINA_FALSE; return EINA_FALSE;
@ -12398,7 +12399,8 @@ edje_edit_source_generate(Evas_Object *obj)
Edje_Part_Description_Common *part_desc; Edje_Part_Description_Common *part_desc;
Edje_Part_Description_Image *part_desc_image; Edje_Part_Description_Image *part_desc_image;
Edje_Part_Description_Text *part_desc_text; Edje_Part_Description_Text *part_desc_text;
unsigned int i, j; unsigned short i;
unsigned int j;
const char *entry; const char *entry;
const char *str; const char *str;
Eina_Strbuf *buf = NULL; Eina_Strbuf *buf = NULL;

View File

@ -560,6 +560,12 @@ _edje_object_file_set_internal(Evas_Object *obj, const Eina_File *file, const ch
if (ed->collection) if (ed->collection)
{ {
if (ed->collection->parts_count > 0xffff)
{
ed->load_error = EDJE_LOAD_ERROR_CORRUPT_FILE;
_edje_file_del(ed);
return 0;
}
eina_array_step_set(&parts, sizeof (Eina_Array), 8); eina_array_step_set(&parts, sizeof (Eina_Array), 8);
if (ed->collection->prop.orientation != EDJE_ORIENTATION_AUTO) if (ed->collection->prop.orientation != EDJE_ORIENTATION_AUTO)
@ -1428,10 +1434,11 @@ _edje_file_add(Edje *ed, const Eina_File *f)
} }
else else
{ {
ed->file = _edje_cache_file_coll_open(f, ed->group, int err = 0;
&(ed->load_error),
&(ed->collection), ed->file = _edje_cache_file_coll_open(f, ed->group, &(err),
ed); &(ed->collection), ed);
ed->load_error = (unsigned short)err;
} }
if (!ed->collection) if (!ed->collection)

View File

@ -537,7 +537,6 @@ struct _AABB {
struct _Edje_File struct _Edje_File
{ {
const char *path; const char *path;
time_t mtime;
Edje_External_Directory *external_dir; Edje_External_Directory *external_dir;
Edje_Image_Directory *image_dir; Edje_Image_Directory *image_dir;
@ -561,12 +560,7 @@ struct _Edje_File
Eina_List *size_classes; Eina_List *size_classes;
Eina_Hash *size_hash; Eina_Hash *size_hash;
int references;
const char *compiler; const char *compiler;
int version;
int minor;
int feature_ver;
FLOAT_T base_scale;
Eina_Hash *data; Eina_Hash *data;
Eina_Hash *fonts; Eina_Hash *fonts;
@ -578,12 +572,21 @@ struct _Edje_File
Eet_File *ef; Eet_File *ef;
Eina_File *f; Eina_File *f;
time_t mtime;
int references;
int version;
int minor;
int feature_ver;
FLOAT_T base_scale;
char fid[8+8+8+2]; char fid[8+8+8+2];
unsigned char free_strings : 1; unsigned char free_strings : 1;
unsigned char allocated_strings : 1; unsigned char allocated_strings : 1;
unsigned char dangling : 1; unsigned char dangling : 1;
unsigned char warning : 1; unsigned char warning : 1;
}; };
struct _Edje_Style struct _Edje_Style
@ -599,9 +602,9 @@ struct _Edje_Style_Tag
{ {
const char *key; const char *key;
const char *value; const char *value;
const char *font; const char *font;
double font_size; const char *text_class;
const char *text_class; double font_size;
}; };
/*----------*/ /*----------*/
@ -636,12 +639,11 @@ struct _Edje_External_Directory_Entry
struct _Edje_Image_Directory struct _Edje_Image_Directory
{ {
Edje_Image_Directory_Entry *entries; /* an array of Edje_Image_Directory_Entry */ Edje_Image_Directory_Entry *entries; /* an array of Edje_Image_Directory_Entry */
unsigned int entries_count;
Edje_Image_Directory_Set *sets; /* an array of Edje_Image_Directory_Set */ Edje_Image_Directory_Set *sets; /* an array of Edje_Image_Directory_Set */
unsigned int sets_count;
Edje_Vector_Directory_Entry *vectors; /* an array of Edje_Image_Directory_Entry */ Edje_Vector_Directory_Entry *vectors; /* an array of Edje_Image_Directory_Entry */
unsigned int entries_count;
unsigned int sets_count;
unsigned int vectors_count; unsigned int vectors_count;
}; };
@ -720,9 +722,9 @@ struct _Edje_Sound_Directory
{ {
Edje_Sound_Sample *samples; /* an array of Edje_Sound_Sample entries */ Edje_Sound_Sample *samples; /* an array of Edje_Sound_Sample entries */
unsigned int samples_count;
Edje_Sound_Tone *tones; /* an array of Edje_Sound_Tone entries */ Edje_Sound_Tone *tones; /* an array of Edje_Sound_Tone entries */
unsigned int samples_count;
unsigned int tones_count; unsigned int tones_count;
}; };
@ -775,17 +777,17 @@ struct _Edje_Color_Tree_Node
struct _Edje_Program /* a conditional program to be run */ struct _Edje_Program /* a conditional program to be run */
{ {
int id; /* id of program */ int id; /* id of program */
int source_3d_id; /* id of real 3D part */
const char *name; /* name of the action */ const char *name; /* name of the action */
const char *signal; /* if signal emission name matches the glob here... */ const char *signal; /* if signal emission name matches the glob here... */
const char *source; /* if part that emitted this (name) matches this glob */ const char *source; /* if part that emitted this (name) matches this glob */
int source_3d_id; /* id of real 3D part */
const char *sample_name; const char *sample_name;
const char *tone_name; const char *tone_name;
double duration;
double speed;
const char *vibration_name; const char *vibration_name;
int vibration_repeat; double duration;
double speed;
struct { struct {
const char *part; const char *part;
@ -797,12 +799,28 @@ struct _Edje_Program /* a conditional program to be run */
double range; double range;
} in; } in;
int action; /* type - set state, stop action, set drag pos etc. */
const char *state; /* what state of alternates to apply, NULL = default */ const char *state; /* what state of alternates to apply, NULL = default */
const char *state2; /* what other state to use - for signal emit action */ const char *state2; /* what other state to use - for signal emit action */
double value; /* value of state to apply (if multiple names match) */ double value; /* value of state to apply (if multiple names match) */
double value2; /* other value for drag actions */ double value2; /* other value for drag actions */
Eina_List *targets; /* list of target parts to apply the state to */
Eina_List *after; /* list of actions to run at the end of this, for looping */
struct {
const char *name;
const char *description;
} api;
int vibration_repeat;
int action; /* type - set state, stop action, set drag pos etc. */
/* used for PARAM_COPY (param names in state and state2 above!) */
struct {
int src; /* part where parameter is being retrieved */
int dst; /* part where parameter is being stored */
} param;
struct { struct {
int mode; /* how to tween - linear, sinusoidal etc. */ int mode; /* how to tween - linear, sinusoidal etc. */
FLOAT_T time; /* time to graduate between current and new state */ FLOAT_T time; /* time to graduate between current and new state */
@ -813,21 +831,6 @@ struct _Edje_Program /* a conditional program to be run */
Eina_Bool use_duration_factor; /* use duration factor or not */ Eina_Bool use_duration_factor; /* use duration factor or not */
} tween; } tween;
Eina_List *targets; /* list of target parts to apply the state to */
Eina_List *after; /* list of actions to run at the end of this, for looping */
struct {
const char *name;
const char *description;
} api;
/* used for PARAM_COPY (param names in state and state2 above!) */
struct {
int src; /* part where parameter is being retrieved */
int dst; /* part where parameter is being stored */
} param;
#ifdef HAVE_EPHYSICS #ifdef HAVE_EPHYSICS
/* used for actions related to physics, as physics impulses and forces */ /* used for actions related to physics, as physics impulses and forces */
struct { struct {
@ -880,7 +883,7 @@ struct _Edje_Limit
struct _Edje_Part_Collection_Directory_Entry struct _Edje_Part_Collection_Directory_Entry
{ {
const char *entry; /* the nominal name of the part collection */ const char *entry; /* the nominal name of the part collection */
int id; /* the id of this named part collection */ Edje_Part_Collection *ref;
struct struct
{ {
@ -888,6 +891,8 @@ struct _Edje_Part_Collection_Directory_Entry
int part; int part;
} count; } count;
int id; /* the id of this named part collection */
struct struct
{ {
PART_TYPE_FIELDS(Eina_Mempool *) PART_TYPE_FIELDS(Eina_Mempool *)
@ -899,7 +904,6 @@ struct _Edje_Part_Collection_Directory_Entry
PART_TYPE_FIELDS(Eina_Mempool *) PART_TYPE_FIELDS(Eina_Mempool *)
} mp_rtl; /* For Right To Left interface */ } mp_rtl; /* For Right To Left interface */
Edje_Part_Collection *ref;
Eina_Bool group_alias; Eina_Bool group_alias;
}; };
@ -909,10 +913,10 @@ struct _Edje_Part_Collection_Directory_Entry
struct _Edje_Pack_Element struct _Edje_Pack_Element
{ {
unsigned char type; /* only GROUP supported for now */
Edje_Real_Part *parent; /* pointer to the table/box that hold it, set at runtime */ Edje_Real_Part *parent; /* pointer to the table/box that hold it, set at runtime */
const char *name; /* if != NULL, will be set with evas_object_name_set */ const char *name; /* if != NULL, will be set with evas_object_name_set */
const char *source; /* group name to use as source for this element */ const char *source; /* group name to use as source for this element */
const char *options; /* extra options for custom objects */
Edje_Size min, prefer, max; Edje_Size min, prefer, max;
struct { struct {
int l, r, t, b; int l, r, t, b;
@ -923,16 +927,16 @@ struct _Edje_Pack_Element
Edje_Alignment align; Edje_Alignment align;
Edje_Alignment weight; Edje_Alignment weight;
Edje_Aspect aspect; Edje_Aspect aspect;
const char *options; /* extra options for custom objects */
/* table specific follows */ /* table specific follows */
int col, row; int col, row;
unsigned short colspan, rowspan; unsigned short colspan, rowspan;
unsigned char type; /* only GROUP supported for now */
}; };
struct _Edje_Physics_Face struct _Edje_Physics_Face
{ {
unsigned char type; /* BOX_FRONT BOX_BACK BOX_RIGHT CYLINDER_BACK ... */
const char *source; /* group name to use as source for this element */ const char *source; /* group name to use as source for this element */
unsigned char type; /* BOX_FRONT BOX_BACK BOX_RIGHT CYLINDER_BACK ... */
}; };
typedef enum { typedef enum {
@ -1035,50 +1039,14 @@ struct _Edje_Signal_Callback_Group
struct _Edje_Part_Collection struct _Edje_Part_Collection
{ {
struct { /* list of Edje_Program */
Edje_Program **fnmatch; /* complex match with "*?[\" */
unsigned int fnmatch_count;
Edje_Program **strcmp; /* No special caractere, plain strcmp does the work */
unsigned int strcmp_count;
Edje_Program **strncmp; /* Finish by * or ?, plain strncmp does the work */
unsigned int strncmp_count;
Edje_Program **strrncmp; /* Start with * or ?, reverse strncmp will do the job */
unsigned int strrncmp_count;
Edje_Program **nocmp; /* Empty signal/source that will never match */
unsigned int nocmp_count;
} programs;
struct { /* list of limit that need to be monitored */
Edje_Limit **vertical;
unsigned int vertical_count;
Edje_Limit **horizontal;
unsigned int horizontal_count;
Edje_Part_Limit *parts;
unsigned int parts_count;
} limits;
Edje_Part **parts; /* an array of Edje_Part */ Edje_Part **parts; /* an array of Edje_Part */
unsigned int parts_count;
Eina_Hash *data; Eina_Hash *data;
int id; /* the collection id */
Eina_Hash *alias; /* aliasing part */ Eina_Hash *alias; /* aliasing part */
Eina_Hash *aliased; /* invert match of alias */ Eina_Hash *aliased; /* invert match of alias */
struct { Embryo_Program *script; /* all the embryo script code for this group */
Edje_Size min, max; const char *part;
unsigned char orientation;
} prop;
int references;
#ifdef EDJE_PROGRAM_CACHE #ifdef EDJE_PROGRAM_CACHE
struct { struct {
@ -1087,6 +1055,40 @@ struct _Edje_Part_Collection
} prog_cache; } prog_cache;
#endif #endif
struct { /* list of Edje_Program */
Edje_Program **fnmatch; /* complex match with "*?[\" */
Edje_Program **strcmp; /* No special caractere, plain strcmp does the work */
Edje_Program **strncmp; /* Finish by * or ?, plain strncmp does the work */
Edje_Program **strrncmp; /* Start with * or ?, reverse strncmp will do the job */
Edje_Program **nocmp; /* Empty signal/source that will never match */
unsigned int fnmatch_count;
unsigned int strcmp_count;
unsigned int strncmp_count;
unsigned int strrncmp_count;
unsigned int nocmp_count;
} programs;
struct { /* list of limit that need to be monitored */
Edje_Limit **vertical;
Edje_Limit **horizontal;
Edje_Part_Limit *parts;
unsigned int vertical_count;
unsigned int horizontal_count;
unsigned int parts_count;
} limits;
unsigned int parts_count;
int id; /* the collection id */
int references;
struct {
Edje_Size min, max;
unsigned char orientation;
} prop;
#ifdef HAVE_EPHYSICS #ifdef HAVE_EPHYSICS
struct { struct {
struct { struct {
@ -1102,9 +1104,6 @@ struct _Edje_Part_Collection
} physics; } physics;
#endif #endif
Embryo_Program *script; /* all the embryo script code for this group */
const char *part;
/* *** generated at runtime *** */ /* *** generated at runtime *** */
struct { struct {
Edje_Signals_Sources_Patterns programs; Edje_Signals_Sources_Patterns programs;
@ -1114,20 +1113,16 @@ struct _Edje_Part_Collection
} patterns; } patterns;
/* *** *** */ /* *** *** */
unsigned char lua_script_only;
unsigned char broadcast_signal;
unsigned char physics_enabled; /* will be 1 if a body is declared */
unsigned char script_recursion; /* permits unsafe Embryo->EDC->Embryo scripting */
unsigned char checked : 1;
struct { struct {
Evas_Real height; Evas_Real height;
Evas_Real width; Evas_Real width;
} scene_size; } scene_size;
unsigned char lua_script_only;
unsigned char broadcast_signal;
unsigned char physics_enabled; /* will be 1 if a body is declared */
unsigned char script_recursion; /* permits unsafe Embryo->EDC->Embryo scripting */
unsigned char checked : 1;
}; };
struct _Edje_Part_Dragable struct _Edje_Part_Dragable
@ -1142,7 +1137,7 @@ struct _Edje_Part_Dragable
int threshold_id; /* dragging outside this bit, -1 = no */ int threshold_id; /* dragging outside this bit, -1 = no */
/* davinchi */ /* davinchi */
int event_id; /* If it is used as scrollbar */ int event_id; /* If it is used as scrollbar */
signed char x; /* can u click & drag this bit in x dir */ signed char x; /* can u click & drag this bit in x dir */
signed char y; /* can u click & drag this bit in y dir */ signed char y; /* can u click & drag this bit in y dir */
@ -1170,12 +1165,16 @@ struct _Edje_Part
Edje_Part_Description_List other; /* other possible descriptors */ Edje_Part_Description_List other; /* other possible descriptors */
const char *source, *source2, *source3, *source4, *source5, *source6; const char *source, *source2, *source3, *source4, *source5, *source6;
int id; /* its id number */ int id; /* its id number */
int clip_to_id; /* the part id to clip this one to */ int clip_to_id; /* the part id to clip this one to */
Edje_Part_Dragable dragable; Edje_Part_Dragable dragable;
Edje_Pack_Element **items; /* packed items for box and table */ Edje_Pack_Element **items; /* packed items for box and table */
Evas_Event_Flags ignore_flags;
Evas_Event_Flags mask_flags;
unsigned int items_count; unsigned int items_count;
Edje_3D_Vec scale_3d;
Edje_Part_Api api;
unsigned char type; /* what type (image, rect, text) */ unsigned char type; /* what type (image, rect, text) */
#ifdef HAVE_EPHYSICS #ifdef HAVE_EPHYSICS
unsigned char physics_body; /* body (none, rigid box, soft circle, ...) */ unsigned char physics_body; /* body (none, rigid box, soft circle, ...) */
@ -1184,10 +1183,7 @@ struct _Edje_Part
unsigned char mouse_events; /* it will affect/respond to mouse events */ unsigned char mouse_events; /* it will affect/respond to mouse events */
unsigned char repeat_events; /* it will repeat events to objects below */ unsigned char repeat_events; /* it will repeat events to objects below */
unsigned char anti_alias; unsigned char anti_alias;
Evas_Event_Flags ignore_flags;
Evas_Event_Flags mask_flags;
unsigned char scale; /* should certain properties scale with edje scale factor? */ unsigned char scale; /* should certain properties scale with edje scale factor? */
Edje_3D_Vec scale_3d;
unsigned char precise_is_inside; unsigned char precise_is_inside;
unsigned char use_alternate_font_metrics; unsigned char use_alternate_font_metrics;
unsigned char pointer_mode; unsigned char pointer_mode;
@ -1196,7 +1192,6 @@ struct _Edje_Part
unsigned char cursor_mode; unsigned char cursor_mode;
unsigned char multiline; unsigned char multiline;
unsigned char access; /* it will be used accessibility feature */ unsigned char access; /* it will be used accessibility feature */
Edje_Part_Api api;
unsigned char nested_children_count; unsigned char nested_children_count;
unsigned char no_render; /* for proxy sources and masks, since 1.15 */ unsigned char no_render; /* for proxy sources and masks, since 1.15 */
}; };
@ -1230,13 +1225,13 @@ struct _Edje_Part_Description_Common
Edje_Aspect_Prefer aspect; Edje_Aspect_Prefer aspect;
const char *color_class; /* how to modify the color */ const char *color_class; /* how to modify the color */
const char *size_class;
Edje_Color color; Edje_Color color;
Edje_Color color2; Edje_Color color2;
int clip_to_id; /* state clip override @since 1.15 */ int clip_to_id; /* state clip override @since 1.15 */
const char *size_class;
struct { struct {
FLOAT_T relative_x; FLOAT_T relative_x;
FLOAT_T relative_y; FLOAT_T relative_y;
@ -1271,6 +1266,9 @@ struct _Edje_Part_Description_Common
} persp; } persp;
#ifdef HAVE_EPHYSICS #ifdef HAVE_EPHYSICS
// XXX: the eblow struct SHOULD be optional -ie a pointer to a sub struct
// XXX: but due to eet encoding we can't do that, but just note this for
// XXX: the future to come up with a way to do this
struct { struct {
double mass; double mass;
double restitution; double restitution;
@ -1307,9 +1305,9 @@ struct _Edje_Part_Description_Common
} physics; } physics;
#endif #endif
Edje_3D_Vec align_3d;
unsigned char visible; /* is it shown */ unsigned char visible; /* is it shown */
unsigned char limit; /* 0 == no, 1 = width, 2 = height, 3 = both */ unsigned char limit; /* 0 == no, 1 = width, 2 = height, 3 = both */
Edje_3D_Vec align_3d;
}; };
struct _Edje_Part_Description_Spec_Fill struct _Edje_Part_Description_Spec_Fill
@ -1382,9 +1380,9 @@ struct _Edje_Part_Description_Spec_Proxy
struct _Edje_Part_Description_Spec_Text struct _Edje_Part_Description_Spec_Text
{ {
Edje_String text; /* if "" or NULL, then leave text unchanged */
char *domain; char *domain;
char *text_class; /* how to apply/modify the font */ char *text_class; /* how to apply/modify the font */
Edje_String text; /* if "" or NULL, then leave text unchanged */
Edje_String style; /* the text style if a textblock */ Edje_String style; /* the text style if a textblock */
Edje_String font; /* if a specific font is asked for */ Edje_String font; /* if a specific font is asked for */
Edje_String repch; /* replacement char for password mode entry */ Edje_String repch; /* replacement char for password mode entry */
@ -1393,11 +1391,13 @@ struct _Edje_Part_Description_Spec_Text
Edje_Color color3; Edje_Color color3;
double ellipsis; /* 0.0 - 1.0 defining where the ellipsis align */ double ellipsis; /* 0.0 - 1.0 defining where the ellipsis align */
char *id_source_part;
char *id_text_source_part;
int size; /* 0 = use user set size */ int size; /* 0 = use user set size */
int id_source; /* -1 if none */ int id_source; /* -1 if none */
char *id_source_part;
int id_text_source; /* -1 if none */ int id_text_source; /* -1 if none */
char *id_text_source_part; int size_range_min;
int size_range_max; /* -1 means, no bound. */
unsigned char fit_x; /* resize font size down to fit in x dir */ unsigned char fit_x; /* resize font size down to fit in x dir */
unsigned char fit_y; /* resize font size down to fit in y dir */ unsigned char fit_y; /* resize font size down to fit in y dir */
@ -1405,8 +1405,6 @@ struct _Edje_Part_Description_Spec_Text
unsigned char min_y; /* if text size should be part min size */ unsigned char min_y; /* if text size should be part min size */
unsigned char max_x; /* if text size should be part max size */ unsigned char max_x; /* if text size should be part max size */
unsigned char max_y; /* if text size should be part max size */ unsigned char max_y; /* if text size should be part max size */
int size_range_min;
int size_range_max; /* -1 means, no bound. */
}; };
struct _Edje_Part_Description_Spec_Box struct _Edje_Part_Description_Spec_Box
@ -1436,30 +1434,26 @@ struct _Edje_Part_Description_Spec_Table
struct _Edje_Part_Description_Spec_Mesh_Node struct _Edje_Part_Description_Spec_Mesh_Node
{ {
struct { struct {
Edje_Part_Image_Id **tweens; Edje_Part_Image_Id **tweens;
unsigned int tweens_count; unsigned int tweens_count;
int id; int id;
Eina_Bool set;
Evas_Canvas3D_Mesh_Primitive primitive; Evas_Canvas3D_Mesh_Primitive primitive;
Evas_Canvas3D_Vertex_Assembly assembly; Evas_Canvas3D_Vertex_Assembly assembly;
int frame; int frame;
Eina_Bool set;
} mesh; } mesh;
struct { struct {
Edje_Part_Image_Id **tweens; Edje_Part_Image_Id **tweens;
unsigned int tweens_count; unsigned int tweens_count;
int id; int id;
Eina_Bool need_texture;
Eina_Bool textured;
Eina_Bool set;
Evas_Canvas3D_Wrap_Mode wrap1; Evas_Canvas3D_Wrap_Mode wrap1;
Evas_Canvas3D_Wrap_Mode wrap2; Evas_Canvas3D_Wrap_Mode wrap2;
Evas_Canvas3D_Texture_Filter filter1; Evas_Canvas3D_Texture_Filter filter1;
Evas_Canvas3D_Texture_Filter filter2; Evas_Canvas3D_Texture_Filter filter2;
Eina_Bool need_texture;
Eina_Bool textured;
Eina_Bool set;
} texture; } texture;
struct { struct {
@ -1469,7 +1463,6 @@ struct _Edje_Part_Description_Spec_Mesh_Node
Eina_Bool normal; Eina_Bool normal;
FLOAT_T shininess; FLOAT_T shininess;
Evas_Canvas3D_Shader_Mode shade; Evas_Canvas3D_Shader_Mode shade;
Evas_Canvas3D_Material_Attrib material_attrib; Evas_Canvas3D_Material_Attrib material_attrib;
} properties; } properties;
@ -1684,34 +1677,32 @@ struct _Edje
#ifdef HAVE_EPHYSICS #ifdef HAVE_EPHYSICS
EPhysics_World *world; EPhysics_World *world;
#endif #endif
double duration_scale; double duration_scale;
double paused_at;
Efl_Vpath_File *file_obj; Efl_Vpath_File *file_obj;
Eina_List *user_defined; Eina_List *user_defined;
lua_State *L; lua_State *L;
Eina_Inlist *lua_objs; Eina_Inlist *lua_objs;
int lua_ref; int lua_ref;
int processing_messages; int processing_messages;
int state;
int preload_count;
unsigned int table_parts_size;
int walking_callbacks;
int references; int references;
int block;
int load_error; FLOAT_T scale;
int freeze;
Evas_Coord x, y, w, h; Evas_Coord x, y, w, h;
Edje_Size min; Edje_Size min;
double paused_at;
FLOAT_T scale; unsigned short table_parts_size;
unsigned short preload_count;
unsigned short walking_callbacks;
unsigned short freeze;
unsigned short block;
unsigned short state;
unsigned char load_error;
Eina_Bool is_rtl : 1; Eina_Bool is_rtl : 1;
Eina_Bool dirty : 1; Eina_Bool dirty : 1;
@ -1721,6 +1712,7 @@ struct _Edje
Eina_Bool have_objects : 1; Eina_Bool have_objects : 1;
Eina_Bool paused : 1; Eina_Bool paused : 1;
Eina_Bool no_anim : 1; Eina_Bool no_anim : 1;
Eina_Bool calc_only : 1; Eina_Bool calc_only : 1;
Eina_Bool walking_actions : 1; Eina_Bool walking_actions : 1;
Eina_Bool block_break : 1; Eina_Bool block_break : 1;
@ -1729,6 +1721,7 @@ struct _Edje
Eina_Bool freeze_calc : 1; Eina_Bool freeze_calc : 1;
Eina_Bool has_entries : 1; Eina_Bool has_entries : 1;
Eina_Bool entries_inited : 1; Eina_Bool entries_inited : 1;
#ifdef EDJE_CALC_CACHE #ifdef EDJE_CALC_CACHE
Eina_Bool text_part_change : 1; Eina_Bool text_part_change : 1;
Eina_Bool all_part_change : 1; Eina_Bool all_part_change : 1;
@ -1862,17 +1855,19 @@ struct _Edje_Real_Part_State
{ {
Edje_Part_Description_Common *description; // 4 Edje_Part_Description_Common *description; // 4
Edje_Part_Description_Common *description_rtl; // 4 Edje_Part_Description_Common *description_rtl; // 4
void *external_params; // 4
Edje_Real_Part_Set *set; // 4
#ifdef EDJE_CALC_CACHE #ifdef EDJE_CALC_CACHE
int state; // 4 int state; // 4
Edje_Calc_Params p; // 271 Edje_Calc_Params p; // 271
#endif #endif
void *external_params; // 4
Edje_Real_Part_Set *set; // 4
}; // 32 }; // 32
// WITH EDJE_CALC_CACHE 307 // WITH EDJE_CALC_CACHE 307
struct _Edje_Real_Part_Drag struct _Edje_Real_Part_Drag
{ {
Edje_Real_Part *confine_to; // 4
Edje_Real_Part *threshold; // 4
FLOAT_T x, y; // 16 FLOAT_T x, y; // 16
Edje_Position_Scale val, size, step, page; // 64 Edje_Position_Scale val, size, step, page; // 64
struct { struct {
@ -1882,8 +1877,6 @@ struct _Edje_Real_Part_Drag
struct { struct {
int x, y; // 8 int x, y; // 8
} tmp; } tmp;
Edje_Real_Part *confine_to; // 4
Edje_Real_Part *threshold; // 4
Eina_Bool need_reset : 1; // 4 Eina_Bool need_reset : 1; // 4
Eina_Bool threshold_started_x : 1; Eina_Bool threshold_started_x : 1;
Eina_Bool threshold_started_y : 1; Eina_Bool threshold_started_y : 1;
@ -1979,10 +1972,10 @@ struct _Edje_Real_Part
FLOAT_T description_pos; // 8 FLOAT_T description_pos; // 8
Edje_Rectangle req; // 16 Edje_Rectangle req; // 16
int x, y, w, h; // 16 int x, y, w, h; // 16
int clicked_button; // 4
#ifdef EDJE_CALC_CACHE #ifdef EDJE_CALC_CACHE
int state; // 4 unsigned short state; // 2
#endif #endif
char clicked_button; // 1
unsigned char type; // 1 unsigned char type; // 1
unsigned char calculated : 2; // 1 unsigned char calculated : 2; // 1
unsigned char calculating : 2; // 0 unsigned char calculating : 2; // 0

View File

@ -316,7 +316,7 @@ _edje_object_play_set(Eo *obj EINA_UNUSED, Edje *ed, Eina_Bool play)
double t; double t;
Eina_List *l; Eina_List *l;
Edje_Running_Program *runp; Edje_Running_Program *runp;
unsigned int i; unsigned short i;
if (!ed) return; if (!ed) return;
if (ed->delete_me) return; if (ed->delete_me) return;
@ -362,7 +362,7 @@ EOLIAN void
_edje_object_animation_set(Eo *obj, Edje *ed, Eina_Bool on) _edje_object_animation_set(Eo *obj, Edje *ed, Eina_Bool on)
{ {
Eina_List *l; Eina_List *l;
unsigned int i; unsigned short i;
if (!ed) return; if (!ed) return;
if (ed->delete_me) return; if (ed->delete_me) return;

View File

@ -172,7 +172,7 @@ _edje_object_efl_canvas_group_group_del(Eo *obj, Edje *ed)
EOLIAN static void EOLIAN static void
_edje_object_efl_canvas_group_group_move(Eo *obj EINA_UNUSED, Edje *ed, Evas_Coord x, Evas_Coord y) _edje_object_efl_canvas_group_group_move(Eo *obj EINA_UNUSED, Edje *ed, Evas_Coord x, Evas_Coord y)
{ {
unsigned int i; unsigned short i;
if ((ed->x == x) && (ed->y == y)) return; if ((ed->x == x) && (ed->y == y)) return;
ed->x = x; ed->x = x;

View File

@ -290,7 +290,7 @@ edje_freeze(void)
static void static void
_edje_util_thaw_edje(Edje *ed) _edje_util_thaw_edje(Edje *ed)
{ {
unsigned int i; unsigned short i;
for (i = 0; i < ed->table_parts_size; i++) for (i = 0; i < ed->table_parts_size; i++)
{ {
@ -308,7 +308,7 @@ _edje_util_thaw_edje(Edje *ed)
if (ed2) _edje_util_thaw_edje(ed2); if (ed2) _edje_util_thaw_edje(ed2);
} }
} }
if ((ed->recalc) && (ed->freeze <= 0)) _edje_recalc_do(ed); if ((ed->recalc) && (ed->freeze == 0)) _edje_recalc_do(ed);
} }
#endif #endif
@ -316,9 +316,9 @@ _edje_util_thaw_edje(Edje *ed)
void void
_edje_language_signal_emit(Edje *ed, Evas_Object *obj, char *signal) _edje_language_signal_emit(Edje *ed, Evas_Object *obj, char *signal)
{ {
int i; unsigned short i;
for (i = 0; i < (int)ed->table_parts_size; i++) for (i = 0; i < ed->table_parts_size; i++)
{ {
Edje_Real_Part *rp = ed->table_parts[i]; Edje_Real_Part *rp = ed->table_parts[i];
@ -491,7 +491,7 @@ _edje_object_scale_set(Eo *obj EINA_UNUSED, Edje *ed, double scale)
Edje *ged; Edje *ged;
Evas_Object *o; Evas_Object *o;
Eina_List *l; Eina_List *l;
unsigned int i; unsigned short i;
if (ed->scale == scale) return EINA_TRUE; if (ed->scale == scale) return EINA_TRUE;
ed->scale = FROM_DOUBLE(scale); ed->scale = FROM_DOUBLE(scale);
@ -545,7 +545,7 @@ _edje_object_orientation_inform(Evas_Object *obj)
EOLIAN void EOLIAN void
_edje_object_mirrored_set(Eo *obj, Edje *ed, Eina_Bool rtl) _edje_object_mirrored_set(Eo *obj, Edje *ed, Eina_Bool rtl)
{ {
unsigned int i; unsigned short i;
if (ed->is_rtl == rtl) return; if (ed->is_rtl == rtl) return;
@ -584,7 +584,7 @@ _edje_object_data_get(Eo *obj EINA_UNUSED, Edje *ed, const char *key)
EOLIAN int EOLIAN int
_edje_object_freeze(Eo *obj EINA_UNUSED, Edje *ed) _edje_object_freeze(Eo *obj EINA_UNUSED, Edje *ed)
{ {
unsigned int i; unsigned short i;
for (i = 0; i < ed->table_parts_size; i++) for (i = 0; i < ed->table_parts_size; i++)
{ {
@ -602,7 +602,7 @@ _edje_object_freeze(Eo *obj EINA_UNUSED, Edje *ed)
EOLIAN int EOLIAN int
_edje_object_thaw(Eo *obj EINA_UNUSED, Edje *ed) _edje_object_thaw(Eo *obj EINA_UNUSED, Edje *ed)
{ {
unsigned int i; unsigned short i;
for (i = 0; i < ed->table_parts_size; i++) for (i = 0; i < ed->table_parts_size; i++)
{ {
@ -1012,7 +1012,7 @@ _edje_object_color_class_set(Eo *obj EINA_UNUSED, Edje *ed, const char *color_cl
if ((int_ret) && (need_update)) if ((int_ret) && (need_update))
{ {
Edje_Real_Part *rp; Edje_Real_Part *rp;
unsigned int i; unsigned short i;
ed->dirty = EINA_TRUE; ed->dirty = EINA_TRUE;
ed->recalc_call = EINA_TRUE; ed->recalc_call = EINA_TRUE;
@ -1073,7 +1073,7 @@ EOLIAN void
_edje_object_color_class_del(Eo *obj EINA_UNUSED, Edje *ed, const char *color_class) _edje_object_color_class_del(Eo *obj EINA_UNUSED, Edje *ed, const char *color_class)
{ {
Edje_Color_Class *cc = NULL; Edje_Color_Class *cc = NULL;
unsigned int i; unsigned short i;
if (!color_class) return; if (!color_class) return;
@ -1107,7 +1107,7 @@ _edje_object_color_class_clear(const Eo *obj EINA_UNUSED, Edje *ed)
Edje_Color_Class *cc = NULL; Edje_Color_Class *cc = NULL;
Eina_List *l; Eina_List *l;
char *color_class; char *color_class;
unsigned int i; unsigned short i;
Eina_Bool int_ret = EINA_TRUE; Eina_Bool int_ret = EINA_TRUE;
if (!ed) return EINA_FALSE; if (!ed) return EINA_FALSE;
@ -1439,7 +1439,7 @@ EOLIAN Eina_Bool
_edje_object_text_class_set(Eo *obj EINA_UNUSED, Edje *ed, const char *text_class, const char *font, Evas_Font_Size size) _edje_object_text_class_set(Eo *obj EINA_UNUSED, Edje *ed, const char *text_class, const char *font, Evas_Font_Size size)
{ {
Edje_Text_Class *tc = NULL; Edje_Text_Class *tc = NULL;
unsigned int i; unsigned short i;
if ((!ed) || (!text_class)) return EINA_FALSE; if ((!ed) || (!text_class)) return EINA_FALSE;
@ -1530,7 +1530,7 @@ EOLIAN void
_edje_object_text_class_del(Eo *obj EINA_UNUSED, Edje *ed, const char *text_class) _edje_object_text_class_del(Eo *obj EINA_UNUSED, Edje *ed, const char *text_class)
{ {
Edje_Text_Class *tc = NULL; Edje_Text_Class *tc = NULL;
unsigned int i; unsigned short i;
if (!text_class) return; if (!text_class) return;
@ -1854,7 +1854,7 @@ EOLIAN Eina_Bool
_edje_object_size_class_set(Eo *obj EINA_UNUSED, Edje *ed, const char *size_class, Evas_Coord minw, Evas_Coord minh, Evas_Coord maxw, Evas_Coord maxh) _edje_object_size_class_set(Eo *obj EINA_UNUSED, Edje *ed, const char *size_class, Evas_Coord minw, Evas_Coord minh, Evas_Coord maxw, Evas_Coord maxh)
{ {
Edje_Size_Class *sc = NULL; Edje_Size_Class *sc = NULL;
unsigned int i; unsigned short i;
if ((!ed) || (!size_class)) return EINA_FALSE; if ((!ed) || (!size_class)) return EINA_FALSE;
@ -1945,7 +1945,7 @@ EOLIAN void
_edje_object_size_class_del(Eo *obj EINA_UNUSED, Edje *ed, const char *size_class) _edje_object_size_class_del(Eo *obj EINA_UNUSED, Edje *ed, const char *size_class)
{ {
Edje_Size_Class *sc = NULL; Edje_Size_Class *sc = NULL;
unsigned int i; unsigned short i;
if (!size_class) return; if (!size_class) return;
@ -2118,7 +2118,7 @@ _edje_object_item_provider_set(Eo *obj EINA_UNUSED, Edje *ed, Edje_Item_Provider
EOLIAN void EOLIAN void
_edje_object_text_change_cb_set(Eo *obj EINA_UNUSED, Edje *ed, Edje_Text_Change_Cb func, void *data) _edje_object_text_change_cb_set(Eo *obj EINA_UNUSED, Edje *ed, Edje_Text_Change_Cb func, void *data)
{ {
unsigned int i; unsigned short i;
ed->text_change.func = func; ed->text_change.func = func;
ed->text_change.data = data; ed->text_change.data = data;
@ -4063,7 +4063,7 @@ _edje_object_parts_extends_calc(Eo *obj EINA_UNUSED, Edje *ed, Evas_Coord *x, Ev
{ {
Evas_Coord xx1 = INT_MAX, yy1 = INT_MAX; Evas_Coord xx1 = INT_MAX, yy1 = INT_MAX;
Evas_Coord xx2 = 0, yy2 = 0; Evas_Coord xx2 = 0, yy2 = 0;
unsigned int i; unsigned short i;
if (!ed) if (!ed)
{ {
@ -4145,7 +4145,7 @@ again:
do do
{ {
unsigned int i; unsigned short i;
calc_count++; calc_count++;
@ -5617,8 +5617,8 @@ _edje_object_perspective_get(Eo *obj EINA_UNUSED, Edje *ed)
EOLIAN Eina_Bool EOLIAN Eina_Bool
_edje_object_preload(Eo *obj, Edje *ed, Eina_Bool cancel) _edje_object_preload(Eo *obj, Edje *ed, Eina_Bool cancel)
{ {
int count; unsigned short count;
unsigned int i; unsigned short i;
if (!ed) return EINA_FALSE; if (!ed) return EINA_FALSE;
@ -6014,7 +6014,7 @@ _edje_real_part_recursive_get_helper(Edje **ed, char **path)
Edje_Real_Part * Edje_Real_Part *
_edje_real_part_get(const Edje *ed, const char *part) _edje_real_part_get(const Edje *ed, const char *part)
{ {
unsigned int i; unsigned short i;
if (!part) return NULL; if (!part) return NULL;
@ -6313,12 +6313,8 @@ _edje_util_freeze(Edje *ed)
int int
_edje_util_thaw(Edje *ed) _edje_util_thaw(Edje *ed)
{ {
if (ed->freeze == 0) return 0;
ed->freeze--; ed->freeze--;
if (ed->freeze < 0)
{
// printf("-------------########### OVER THAW\n");
ed->freeze = 0;
}
if ((ed->freeze == 0) && (ed->recalc)) if ((ed->freeze == 0) && (ed->recalc))
{ {
// printf("thaw recalc\n"); // printf("thaw recalc\n");