From 4d316f3becfe81fe421987bb573a603d883fc7e1 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Tue, 12 Mar 2013 19:01:32 +0900 Subject: [PATCH] eo, evas, edje: reorder structure for reducing memory usage. --- src/lib/edje/edje_private.h | 50 +++++++++++++------------- src/lib/eo/eo.c | 9 ++--- src/lib/evas/canvas/evas_object_text.c | 31 ++++++++-------- src/lib/evas/include/evas_private.h | 18 +++++----- 4 files changed, 56 insertions(+), 52 deletions(-) diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h index 6a93b5e39d..6e849eca9a 100644 --- a/src/lib/edje/edje_private.h +++ b/src/lib/edje/edje_private.h @@ -1234,9 +1234,6 @@ struct _Edje const char *group; const char *parent; - Evas_Coord x, y, w, h; - Edje_Size min; - double paused_at; Evas_Object *obj; /* the smart object */ Edje_File *file; /* the file the data comes form */ Edje_Part_Collection *collection; /* the description being used */ @@ -1254,8 +1251,6 @@ struct _Edje Eina_List *markup_filter_callbacks; void *script_only_data; - unsigned int table_parts_size; - Eina_List *groups; struct { @@ -1267,13 +1262,6 @@ struct _Edje const Edje_Signal_Callback_Group *callbacks; - int references; - int block; - int load_error; - int freeze; - FLOAT_T scale; - Eina_Bool is_rtl : 1; - struct { Edje_Text_Change_Cb func; void *data; @@ -1284,29 +1272,41 @@ struct _Edje void *data; int num; } message; - int processing_messages; - - int state; - - int preload_count; - - lua_State *L; - Eina_Inlist *lua_objs; - int lua_ref; struct { Edje_Item_Provider_Cb func; void *data; } item_provider; - Eina_List *user_defined; - - int walking_callbacks; - #ifdef HAVE_EPHYSICS EPhysics_World *world; #endif + Eina_List *user_defined; + + lua_State *L; + Eina_Inlist *lua_objs; + int lua_ref; + + int processing_messages; + int state; + int preload_count; + + unsigned int table_parts_size; + + int walking_callbacks; + + int references; + int block; + int load_error; + int freeze; + + Evas_Coord x, y, w, h; + Edje_Size min; + double paused_at; + FLOAT_T scale; + + Eina_Bool is_rtl : 1; Eina_Bool dirty : 1; Eina_Bool recalc : 1; Eina_Bool delete_callbacks : 1; diff --git a/src/lib/eo/eo.c b/src/lib/eo/eo.c index 141d3b19c9..34c6cbf3ad 100644 --- a/src/lib/eo/eo.c +++ b/src/lib/eo/eo.c @@ -38,7 +38,6 @@ struct _Eo { Eo *parent; Eina_Inlist *children; const Eo_Class *klass; - int refcount; #ifdef EO_DEBUG Eina_Inlist *xrefs; #endif @@ -47,6 +46,8 @@ struct _Eo { Eo_Kls_Itr mro_itr; + int refcount; + Eina_Bool do_error:1; Eina_Bool condtor_done:1; @@ -99,17 +100,17 @@ struct _Eo_Class const Eo_Class *parent; const Eo_Class_Description *desc; Dich_Chain1 *chain; /**< The size is chain size */ - size_t chain_size; - size_t base_id; const Eo_Class **extensions; Eo_Extension_Data_Offset *extn_data_off; - size_t extn_data_size; const Eo_Class **mro; Eo_Kls_Itr mro_itr; + size_t extn_data_size; + size_t chain_size; + size_t base_id; size_t data_offset; /* < Offset of the data within object data. */ Eina_Bool constructed : 1; diff --git a/src/lib/evas/canvas/evas_object_text.c b/src/lib/evas/canvas/evas_object_text.c index 3b27712997..c31ddd4ddf 100644 --- a/src/lib/evas/canvas/evas_object_text.c +++ b/src/lib/evas/canvas/evas_object_text.c @@ -25,33 +25,36 @@ struct _Evas_Object_Text DATA32 magic; struct { - const char *utf8_text; /* The text exposed to the API */ - const char *font; - Evas_Font_Description *fdesc; - const char *source; - Evas_Font_Size size; struct { unsigned char r, g, b, a; } outline, shadow, glow, glow2; - unsigned char style; - double ellipsis; + const char *utf8_text; /* The text exposed to the API */ + const char *font; + Evas_Font_Description *fdesc; + const char *source; Eina_Unicode *text; + + double ellipsis; + + Evas_Font_Size size; + unsigned char style; } cur, prev; - float ascent, descent; - float max_ascent, max_descent; + struct { + Evas_Object_Text_Item *ellipsis_start; + Evas_Object_Text_Item *ellipsis_end; + Evas_Coord w, h; + } last_computed; + Evas_BiDi_Paragraph_Props *bidi_par_props; const char *bidi_delimiters; Evas_Object_Text_Item *items; Evas_Font_Set *font; - struct { - Evas_Coord w, h; - Evas_Object_Text_Item *ellipsis_start; - Evas_Object_Text_Item *ellipsis_end; - } last_computed; + float ascent, descent; + float max_ascent, max_descent; Evas_BiDi_Direction bidi_dir : 2; char changed : 1; diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h index d8f1e7051f..a8e01eee79 100644 --- a/src/lib/evas/include/evas_private.h +++ b/src/lib/evas/include/evas_private.h @@ -612,12 +612,6 @@ struct _Evas_Object_Protected_Data unsigned char delete_me; - Evas_Object_Pointer_Mode pointer_mode : 2; - - Eina_Bool store : 1; - Eina_Bool pass_events : 1; - Eina_Bool freeze_events : 1; - Eina_Bool repeat_events : 1; struct { Eina_Bool pass_events : 1; Eina_Bool pass_events_valid : 1; @@ -626,28 +620,34 @@ struct _Evas_Object_Protected_Data Eina_Bool src_invisible : 1; Eina_Bool src_invisible_valid : 1; } parent_cache; + + Evas_Object_Pointer_Mode pointer_mode : 2; + Eina_Bool store : 1; + Eina_Bool pass_events : 1; + Eina_Bool freeze_events : 1; + Eina_Bool repeat_events : 1; Eina_Bool restack : 1; Eina_Bool is_active : 1; + Eina_Bool precise_is_inside : 1; Eina_Bool is_static_clip : 1; - Eina_Bool render_pre : 1; Eina_Bool rect_del : 1; Eina_Bool mouse_in : 1; Eina_Bool pre_render_done : 1; Eina_Bool intercepted : 1; Eina_Bool focused : 1; + Eina_Bool in_layer : 1; Eina_Bool no_propagate : 1; - Eina_Bool changed : 1; Eina_Bool changed_move : 1; Eina_Bool changed_color : 1; Eina_Bool changed_map : 1; Eina_Bool changed_pchange : 1; Eina_Bool changed_src_visible : 1; - Eina_Bool del_ref : 1; + Eina_Bool del_ref : 1; Eina_Bool is_frame : 1; Eina_Bool child_has_map : 1; Eina_Bool eo_del_called : 1;