From: Enlightenment C. <no...@cv...> - 2008-05-01 04:14:13
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib/include Modified Files: evas_private.h Log Message: Save 8 bytes from Evas_Object by packing interpolation.color_space. Interpolation color_space (now ASHV or ARGB) was being used inside a struct with 4 byte alignment. Remove it from the struct and make it a bitfield so can be packed with the other fields. This saves 2 integers, so 8 bytes. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/include/evas_private.h,v retrieving revision 1.99 retrieving revision 1.100 diff -u -3 -r1.99 -r1.100 --- evas_private.h 1 May 2008 03:52:20 -0000 1.99 +++ evas_private.h 1 May 2008 04:14:08 -0000 1.100 @@ -418,12 +418,10 @@ } color; int layer; Evas_Object *clipper; - struct { - int color_space; - } interpolation; Evas_Bool visible : 1; Evas_Bool have_clipees : 1; Evas_Bool anti_alias : 1; + unsigned char interpolation_color_space : 1; Evas_Render_Op render_op : 4; } cur, prev; |
From: Enlightenment C. <no...@cv...> - 2008-05-01 04:15:33
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib/include Modified Files: evas_private.h Log Message: Use more specific types in Evas_Object. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/include/evas_private.h,v retrieving revision 1.97 retrieving revision 1.98 diff -u -3 -r1.97 -r1.98 --- evas_private.h 30 Apr 2008 23:58:43 -0000 1.97 +++ evas_private.h 1 May 2008 03:42:21 -0000 1.98 @@ -408,23 +408,23 @@ struct { int x, y, w, h; unsigned char r, g, b, a; - unsigned char visible : 1; - unsigned char dirty : 1; + Evas_Bool visible : 1; + Evas_Bool dirty : 1; } clip; } cache; Evas_Coord_Rectangle geometry; struct { unsigned char r, g, b, a; } color; - unsigned char visible : 1; - unsigned char have_clipees : 1; + Evas_Bool visible : 1; + Evas_Bool have_clipees : 1; int layer; Evas_Object *clipper; - unsigned char anti_alias; + Evas_Bool anti_alias; struct { int color_space; } interpolation; - int render_op; + Evas_Render_Op render_op; } cur, prev; char *name; @@ -465,20 +465,20 @@ int mouse_grabbed; Evas_Object_Pointer_Mode pointer_mode; - unsigned short store : 1; - unsigned short pass_events : 1; - unsigned short parent_pass_events : 1; - unsigned short parent_cache_valid : 1; - unsigned short repeat_events : 1; - unsigned short restack : 1; - unsigned short changed : 1; - unsigned short mouse_in : 1; - unsigned short pre_render_done : 1; - unsigned short intercepted : 1; - unsigned short focused : 1; - unsigned short in_layer : 1; - unsigned short no_propagate : 1; - unsigned short precise_is_inside : 1; + Evas_Bool store : 1; + Evas_Bool pass_events : 1; + Evas_Bool parent_pass_events : 1; + Evas_Bool parent_cache_valid : 1; + Evas_Bool repeat_events : 1; + Evas_Bool restack : 1; + Evas_Bool changed : 1; + Evas_Bool mouse_in : 1; + Evas_Bool pre_render_done : 1; + Evas_Bool intercepted : 1; + Evas_Bool focused : 1; + Evas_Bool in_layer : 1; + Evas_Bool no_propagate : 1; + Evas_Bool precise_is_inside : 1; unsigned char delete_me; }; |
From: Enlightenment C. <no...@cv...> - 2008-05-01 05:48:05
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib/include Modified Files: evas_private.h Log Message: Save 20 bytes moving smart data to its specific object struct. This saves 20 bytes, bringing Evas_Object to 200 bytes, by moving data specific to smart objects to their own struct (Evas_Object_Smart). There is still one remaining member that could be removed: smart.smart, this is used mainly to identify if one object is a smart object or not. One possibility would be to add a bitfield to state that, but another possibility is to check Evas_Object::object_data and see if it's a smart or not. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/include/evas_private.h,v retrieving revision 1.100 retrieving revision 1.101 diff -u -3 -r1.100 -r1.101 --- evas_private.h 1 May 2008 04:14:08 -0000 1.100 +++ evas_private.h 1 May 2008 05:48:03 -0000 1.101 @@ -447,13 +447,8 @@ void *object_data; struct { - int walking_list; Evas_Smart *smart; - void *data; Evas_Object *parent; - Evas_Object_List *contained; - Evas_List *callbacks; - unsigned char deletions_waiting : 1; } smart; Evas_Size_Hints *size_hints; @@ -738,6 +733,11 @@ void evas_object_smart_unuse(Evas_Smart *s); void evas_object_smart_del(Evas_Object *obj); void evas_object_smart_cleanup(Evas_Object *obj); +void evas_object_smart_member_raise(Evas_Object *member); +void evas_object_smart_member_lower(Evas_Object *member); +void evas_object_smart_member_stack_above(Evas_Object *member, Evas_Object *other); +void evas_object_smart_member_stack_below(Evas_Object *member, Evas_Object *other); +const Evas_Object_List *evas_object_smart_members_get_direct(const Evas_Object *obj); void *evas_mem_calloc(int size); void evas_object_event_callback_all_del(Evas_Object *obj); void evas_object_event_callback_cleanup(Evas_Object *obj); |
From: Enlightenment C. <no...@cv...> - 2008-05-01 05:48:36
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib/canvas Modified Files: evas_events.c evas_object_smart.c evas_object_text.c evas_render.c evas_stack.c Log Message: Save 20 bytes moving smart data to its specific object struct. This saves 20 bytes, bringing Evas_Object to 200 bytes, by moving data specific to smart objects to their own struct (Evas_Object_Smart). There is still one remaining member that could be removed: smart.smart, this is used mainly to identify if one object is a smart object or not. One possibility would be to add a bitfield to state that, but another possibility is to check Evas_Object::object_data and see if it's a smart or not. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/canvas/evas_events.c,v retrieving revision 1.58 retrieving revision 1.59 diff -u -3 -r1.58 -r1.59 --- evas_events.c 31 Mar 2008 21:38:38 -0000 1.58 +++ evas_events.c 1 May 2008 05:48:03 -0000 1.59 @@ -20,9 +20,9 @@ } static Evas_List * -_evas_event_object_list_in_get(Evas *e, Evas_List *in, Evas_Object_List *list, Evas_Object *stop, int x, int y, int *no_rep) +_evas_event_object_list_in_get(Evas *e, Evas_List *in, const Evas_Object_List *list, Evas_Object *stop, int x, int y, int *no_rep) { - Evas_Object_List *l; + const Evas_Object_List *l; if (!list) return in; for (l = list->last; l; l = l->prev) @@ -47,7 +47,7 @@ norep = 0; in = _evas_event_object_list_in_get(e, in, - obj->smart.contained, + evas_object_smart_members_get_direct(obj), stop, x, y, &norep); if (norep) { =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/canvas/evas_object_smart.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -3 -r1.30 -r1.31 --- evas_object_smart.c 8 Feb 2008 22:35:19 -0000 1.30 +++ evas_object_smart.c 1 May 2008 05:48:03 -0000 1.31 @@ -8,6 +8,11 @@ { DATA32 magic; void *engine_data; + void *data; + Evas_List *callbacks; + Evas_Object_List *contained; + int walking_list; + Evas_Bool deletions_waiting : 1; }; struct _Evas_Smart_Callback @@ -78,7 +83,7 @@ MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART); return; MAGIC_CHECK_END(); - obj->smart.data = data; + o->data = data; } /** @@ -101,7 +106,7 @@ MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART); return NULL; MAGIC_CHECK_END(); - return obj->smart.data; + return o->data; } /** @@ -177,7 +182,7 @@ obj->cur.layer = obj->layer->layer; obj->layer->usage++; obj->smart.parent = smart_obj; - smart_obj->smart.contained = evas_object_list_append(smart_obj->smart.contained, obj); + o->contained = evas_object_list_append(o->contained, obj); evas_object_smart_member_cache_invalidate(obj); obj->restack = 1; evas_object_change(obj); @@ -197,12 +202,16 @@ EAPI void evas_object_smart_member_del(Evas_Object *obj) { + Evas_Object_Smart *o; + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return; MAGIC_CHECK_END(); if (!obj->smart.parent) return; - obj->smart.parent->smart.contained = evas_object_list_remove(obj->smart.parent->smart.contained, obj); + + o = (Evas_Object_Smart *)(obj->smart.parent->object_data); + o->contained = evas_object_list_remove(o->contained, obj); obj->smart.parent = NULL; evas_object_smart_member_cache_invalidate(obj); obj->layer->usage--; @@ -237,20 +246,34 @@ EAPI Evas_List * evas_object_smart_members_get(const Evas_Object *obj) { + Evas_Object_Smart *o; Evas_List *members; Evas_Object_List *member; MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); return NULL; MAGIC_CHECK_END(); - + o = (Evas_Object_Smart *)(obj->object_data); + MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART); + return NULL; + MAGIC_CHECK_END(); + members = NULL; - for (member = obj->smart.contained; member; member = member->next) + for (member = o->contained; member; member = member->next) members = evas_list_append(members, member); return members; } +const Evas_Object_List * +evas_object_smart_members_get_direct(const Evas_Object *obj) +{ + Evas_Object_Smart *o; + + o = (Evas_Object_Smart *)(obj->object_data); + return o->contained; +} + /** * Instantiates a new smart object described by @p s. * @@ -313,7 +336,7 @@ cb->event = evas_stringshare_add(event); cb->func = func; cb->func_data = (void *)data; - obj->smart.callbacks = evas_list_prepend(obj->smart.callbacks, cb); + o->callbacks = evas_list_prepend(o->callbacks, cb); } /** @@ -341,7 +364,7 @@ return NULL; MAGIC_CHECK_END(); if (!event) return NULL; - for (l = obj->smart.callbacks; l; l = l->next) + for (l = o->callbacks; l; l = l->next) { Evas_Smart_Callback *cb; @@ -352,7 +375,7 @@ data = cb->func_data; cb->delete_me = 1; - obj->smart.deletions_waiting = 1; + o->deletions_waiting = 1; evas_object_smart_callbacks_clear(obj); return data; } @@ -388,8 +411,8 @@ MAGIC_CHECK_END(); if (!event) return; if (obj->delete_me) return; - obj->smart.walking_list++; - for (l = obj->smart.callbacks; l; l = l->next) + o->walking_list++; + for (l = o->callbacks; l; l = l->next) { Evas_Smart_Callback *cb; @@ -402,7 +425,7 @@ if (obj->delete_me) break; } - obj->smart.walking_list--; + o->walking_list--; evas_object_smart_callbacks_clear(obj); } @@ -410,11 +433,14 @@ static void evas_object_smart_callbacks_clear(Evas_Object *obj) { + Evas_Object_Smart *o; Evas_List *l; - if (obj->smart.walking_list) return; - if (!obj->smart.deletions_waiting) return; - for (l = obj->smart.callbacks; l;) + o = (Evas_Object_Smart *)(obj->object_data); + + if (o->walking_list) return; + if (!o->deletions_waiting) return; + for (l = o->callbacks; l;) { Evas_Smart_Callback *cb; @@ -422,7 +448,7 @@ l = l->next; if (cb->delete_me) { - obj->smart.callbacks = evas_list_remove(obj->smart.callbacks, cb); + o->callbacks = evas_list_remove(o->callbacks, cb); if (cb->event) evas_stringshare_del(cb->event); free(cb); } @@ -444,40 +470,92 @@ void evas_object_smart_cleanup(Evas_Object *obj) { - Evas_Smart *s; + Evas_Object_Smart *o; - s = obj->smart.smart; if (obj->smart.parent) evas_object_smart_member_del(obj); - while (obj->smart.contained) - evas_object_smart_member_del((Evas_Object *)obj->smart.contained); - while (obj->smart.callbacks) + + o = (Evas_Object_Smart *)(obj->object_data); + if (o->magic == MAGIC_OBJ_SMART) { - Evas_Smart_Callback *cb; + while (o->contained) + evas_object_smart_member_del((Evas_Object *)o->contained); + + while (o->callbacks) + { + Evas_Smart_Callback *cb; + + cb = o->callbacks->data; + o->callbacks = evas_list_remove(o->callbacks, cb); + if (cb->event) evas_stringshare_del(cb->event); + free(cb); + } - cb = obj->smart.callbacks->data; - obj->smart.callbacks = evas_list_remove(obj->smart.callbacks, cb); - if (cb->event) evas_stringshare_del(cb->event); - free(cb); + o->data = NULL; } + obj->smart.parent = NULL; - obj->smart.data = NULL; obj->smart.smart = NULL; } void evas_object_smart_member_cache_invalidate(Evas_Object *obj) { + Evas_Object_Smart *o; Evas_Object_List *l; - + + o = (Evas_Object_Smart *)(obj->object_data); + if (o->magic != MAGIC_OBJ_SMART) + return; + obj->parent_cache_valid = 0; - for (l = obj->smart.contained; l; l = l->next) + for (l = o->contained; l; l = l->next) { Evas_Object *obj2; obj2 = (Evas_Object *)l; evas_object_smart_member_cache_invalidate(obj2); } +} + +void +evas_object_smart_member_raise(Evas_Object *member) +{ + Evas_Object_Smart *o; + + o = (Evas_Object_Smart *)(member->smart.parent->object_data); + o->contained = evas_object_list_remove(o->contained, member); + o->contained = evas_object_list_append(o->contained, member); +} + +void +evas_object_smart_member_lower(Evas_Object *member) +{ + Evas_Object_Smart *o; + + o = (Evas_Object_Smart *)(member->smart.parent->object_data); + o->contained = evas_object_list_remove(o->contained, member); + o->contained = evas_object_list_prepend(o->contained, member); +} + +void +evas_object_smart_member_stack_above(Evas_Object *member, Evas_Object *other) +{ + Evas_Object_Smart *o; + + o = (Evas_Object_Smart *)(member->smart.parent->object_data); + o->contained = evas_object_list_remove(o->contained, member); + o->contained = evas_object_list_append_relative(o->contained, member, other); +} + +void +evas_object_smart_member_stack_below(Evas_Object *member, Evas_Object *other) +{ + Evas_Object_Smart *o; + + o = (Evas_Object_Smart *)(member->smart.parent->object_data); + o->contained = evas_object_list_remove(o->contained, member); + o->contained = evas_object_list_prepend_relative(o->contained, member, other); } /* all nice and private */ =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/canvas/evas_object_text.c,v retrieving revision 1.68 retrieving revision 1.69 diff -u -3 -r1.68 -r1.69 --- evas_object_text.c 8 Feb 2008 22:35:19 -0000 1.68 +++ evas_object_text.c 1 May 2008 05:48:03 -0000 1.69 @@ -1010,9 +1010,9 @@ { if (obj->smart.smart) { - Evas_Object_List *l3; + const Evas_Object_List *l3; - for (l3 = obj->smart.contained; l3; l3 = l3->next) + for (l3 = evas_object_smart_members_get_direct(obj); l3; l3 = l3->next) { obj = (Evas_Object *)l3; evas_font_object_rehint(obj); =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/canvas/evas_render.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -3 -r1.27 -r1.28 --- evas_render.c 14 Apr 2008 09:31:31 -0000 1.27 +++ evas_render.c 1 May 2008 05:48:03 -0000 1.28 @@ -91,10 +91,10 @@ { if (obj->smart.smart) { - Evas_Object_List *l; + const Evas_Object_List *l; obj->func->render_pre(obj); - for (l = obj->smart.contained; l; l = l->next) + for (l = evas_object_smart_members_get_direct(obj); l; l = l->next) { Evas_Object *obj2; @@ -126,10 +126,10 @@ { if (obj->smart.smart) { - Evas_Object_List *l; + const Evas_Object_List *l; obj->func->render_pre(obj); - for (l = obj->smart.contained; l; l = l->next) + for (l = evas_object_smart_members_get_direct(obj); l; l = l->next) { Evas_Object *obj2; =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/canvas/evas_stack.c,v retrieving revision 1.26 retrieving revision 1.27 diff -u -3 -r1.26 -r1.27 --- evas_stack.c 8 Feb 2008 22:35:19 -0000 1.26 +++ evas_stack.c 1 May 2008 05:48:03 -0000 1.27 @@ -56,10 +56,7 @@ return; } if (obj->smart.parent) - { - obj->smart.parent->smart.contained = evas_object_list_remove(obj->smart.parent->smart.contained, obj); - obj->smart.parent->smart.contained = evas_object_list_append(obj->smart.parent->smart.contained, obj); - } + evas_object_smart_member_raise(obj); else { if (obj->in_layer) @@ -115,10 +112,7 @@ return; } if (obj->smart.parent) - { - obj->smart.parent->smart.contained = evas_object_list_remove(obj->smart.parent->smart.contained, obj); - obj->smart.parent->smart.contained = evas_object_list_prepend(obj->smart.parent->smart.contained, obj); - } + evas_object_smart_member_lower(obj); else { if (obj->in_layer) @@ -195,8 +189,7 @@ // printf("BITCH! evas_object_stack_above(), %p not inside same smart as %p!\n", obj, above); return; } - obj->smart.parent->smart.contained = evas_object_list_remove(obj->smart.parent->smart.contained, obj); - obj->smart.parent->smart.contained = evas_object_list_append_relative(obj->smart.parent->smart.contained, obj, above); + evas_object_smart_member_stack_above(obj, above); } else { @@ -279,8 +272,7 @@ // printf("BITCH! evas_object_stack_below(), %p not inside same smart as %p!\n", obj, below); return; } - obj->smart.parent->smart.contained = evas_object_list_remove(obj->smart.parent->smart.contained, obj); - obj->smart.parent->smart.contained = evas_object_list_prepend_relative(obj->smart.parent->smart.contained, obj, below); + evas_object_smart_member_stack_below(obj, below); } else { |
From: Enlightenment C. <no...@cv...> - 2008-05-01 06:18:27
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib/include Modified Files: evas_private.h Log Message: Make layer number a short and Save 8 bytes. By having a layer as a short (16 bits) we can pack it together with the bitfields, saving 4 bytes per sub-struct, 8 bytes in total, also bringing the struct down from 4 to 3 cachelines on my laptop. Rationale: layers are mostly used to differentiate groups of objects and they stacking, usually we have few layers and we use very large or very small numbers to make a layer be at the top or at the bottom, but usually we don't need so many layers. Caution: code that use values like 999999 will break, so fix your code! I'll provide another patch to fix all the CVS using these large values. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/include/evas_private.h,v retrieving revision 1.101 retrieving revision 1.102 diff -u -3 -r1.101 -r1.102 --- evas_private.h 1 May 2008 05:48:03 -0000 1.101 +++ evas_private.h 1 May 2008 06:18:21 -0000 1.102 @@ -361,7 +361,7 @@ { Evas_Object_List _list_data; - int layer; + short layer; Evas_Object *objects; Evas *evas; @@ -416,8 +416,8 @@ struct { unsigned char r, g, b, a; } color; - int layer; Evas_Object *clipper; + short layer; Evas_Bool visible : 1; Evas_Bool have_clipees : 1; Evas_Bool anti_alias : 1; @@ -694,7 +694,7 @@ Evas_Layer *evas_layer_new(Evas *e); void evas_layer_pre_free(Evas_Layer *lay); void evas_layer_free(Evas_Layer *lay); -Evas_Layer *evas_layer_find(Evas *e, int layer_num); +Evas_Layer *evas_layer_find(Evas *e, short layer_num); void evas_layer_add(Evas_Layer *lay); void evas_layer_del(Evas_Layer *lay); void evas_object_coords_recalc(Evas_Object *obj); |
From: Enlightenment C. <no...@cv...> - 2008-05-01 06:18:28
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib/canvas Modified Files: evas_layer.c Log Message: Make layer number a short and Save 8 bytes. By having a layer as a short (16 bits) we can pack it together with the bitfields, saving 4 bytes per sub-struct, 8 bytes in total, also bringing the struct down from 4 to 3 cachelines on my laptop. Rationale: layers are mostly used to differentiate groups of objects and they stacking, usually we have few layers and we use very large or very small numbers to make a layer be at the top or at the bottom, but usually we don't need so many layers. Caution: code that use values like 999999 will break, so fix your code! I'll provide another patch to fix all the CVS using these large values. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/canvas/evas_layer.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -3 -r1.20 -r1.21 --- evas_layer.c 8 Feb 2008 22:35:19 -0000 1.20 +++ evas_layer.c 1 May 2008 06:18:21 -0000 1.21 @@ -78,7 +78,7 @@ } Evas_Layer * -evas_layer_find(Evas *e, int layer_num) +evas_layer_find(Evas *e, short layer_num) { Evas_Object_List *list; @@ -139,7 +139,7 @@ * @ingroup Evas_Object_Layer_Group */ EAPI void -evas_object_layer_set(Evas_Object *obj, int l) +evas_object_layer_set(Evas_Object *obj, short l) { Evas *e; @@ -187,7 +187,7 @@ * @return Number of the layer. * @ingroup Evas_Object_Layer_Group */ -EAPI int +EAPI short evas_object_layer_get(const Evas_Object *obj) { MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); |
From: Enlightenment C. <no...@cv...> - 2008-05-01 06:18:53
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib Modified Files: Evas.h Log Message: Make layer number a short and Save 8 bytes. By having a layer as a short (16 bits) we can pack it together with the bitfields, saving 4 bytes per sub-struct, 8 bytes in total, also bringing the struct down from 4 to 3 cachelines on my laptop. Rationale: layers are mostly used to differentiate groups of objects and they stacking, usually we have few layers and we use very large or very small numbers to make a layer be at the top or at the bottom, but usually we don't need so many layers. Caution: code that use values like 999999 will break, so fix your code! I'll provide another patch to fix all the CVS using these large values. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/Evas.h,v retrieving revision 1.120 retrieving revision 1.121 diff -u -3 -r1.120 -r1.121 --- Evas.h 30 Apr 2008 23:58:42 -0000 1.120 +++ Evas.h 1 May 2008 06:18:21 -0000 1.121 @@ -704,8 +704,8 @@ EAPI const char *evas_object_type_get (const Evas_Object *obj); - EAPI void evas_object_layer_set (Evas_Object *obj, int l); - EAPI int evas_object_layer_get (const Evas_Object *obj); + EAPI void evas_object_layer_set (Evas_Object *obj, short l); + EAPI short evas_object_layer_get (const Evas_Object *obj); EAPI void evas_object_raise (Evas_Object *obj); EAPI void evas_object_lower (Evas_Object *obj); |
From: Enlightenment C. <no...@cv...> - 2008-05-01 06:39:58
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib Modified Files: Evas.h Log Message: Fix users of evas_object_layer_set() outside the "short" range. This also introduces EVAS_LAYER_MIN and EVAS_LAYER_MAX for ease of use. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/Evas.h,v retrieving revision 1.121 retrieving revision 1.122 diff -u -3 -r1.121 -r1.122 --- Evas.h 1 May 2008 06:18:21 -0000 1.121 +++ Evas.h 1 May 2008 06:39:26 -0000 1.122 @@ -202,6 +202,9 @@ } data; }; +#define EVAS_LAYER_MIN -32768 /**< bottom-most layer number */ +#define EVAS_LAYER_MAX 32767 /**< top-most layer number */ + #define EVAS_PIXEL_FORMAT_NONE 0 /**< No pixel format */ #define EVAS_PIXEL_FORMAT_ARGB32 1 /**< ARGB 32bit pixel format with A in the high byte per 32bit pixel word */ #define EVAS_PIXEL_FORMAT_YUV420P_601 2 /**< YUV 420 Planar format with CCIR 601 color encoding wuth contiguous planes in the order Y, U and V */ |
From: Enlightenment C. <no...@cv...> - 2008-05-13 19:32:08
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/modules/engines/directfb Removed Files: .cvsignore Evas_Engine_DirectFB.h Makefile.am evas_engine_dfb.c evas_engine_dfb.h evas_engine_dfb_image_objects.c evas_engine_dfb_image_objects.h Log Message: Remove DirectFB, will add a new one based on SDL code. Remove DirectFB, will create a new one based on SDL. |
From: Enlightenment C. <no...@cv...> - 2008-05-20 20:56:43
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib/include Modified Files: evas_common.h Log Message: Remove bugs with bitfield usage, make boolean usage clear. This patch fixes the problem with bitfield of signed types (ie: char), where the bit would be used for the signal, so 1 is considered -0 and thus 0. Move all the single bit fields to Evas_Bool, making it clear and also avoiding these problems since Evas_Bool is unsigned char. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/include/evas_common.h,v retrieving revision 1.97 retrieving revision 1.98 diff -u -3 -r1.97 -r1.98 --- evas_common.h 19 May 2008 03:13:16 -0000 1.97 +++ evas_common.h 20 May 2008 20:56:39 -0000 1.98 @@ -283,12 +283,12 @@ struct { - unsigned int loaded : 1; - unsigned int dirty : 1; - unsigned int activ : 1; - unsigned int need_data : 1; - unsigned int lru_nodata : 1; - unsigned int cached : 1; + Evas_Bool loaded : 1; + Evas_Bool dirty : 1; + Evas_Bool activ : 1; + Evas_Bool need_data : 1; + Evas_Bool lru_nodata : 1; + Evas_Bool cached : 1; } flags; int references; @@ -320,11 +320,11 @@ struct { - unsigned int cached : 1; - unsigned int activ : 1; - unsigned int dirty : 1; - unsigned int loaded : 1; - unsigned int need_parent : 1; + Evas_Bool cached : 1; + Evas_Bool activ : 1; + Evas_Bool dirty : 1; + Evas_Bool loaded : 1; + Evas_Bool need_parent : 1; } flags; int references; @@ -347,7 +347,7 @@ struct _RGBA_Draw_Context { struct { - char use : 1; + Evas_Bool use : 1; DATA32 col; } mul; struct { @@ -355,7 +355,7 @@ } col; struct RGBA_Draw_Context_clip { int x, y, w, h; - char use : 1; + Evas_Bool use : 1; } clip; Cutout_Rects cutout; struct { @@ -373,7 +373,7 @@ int y, h; } sli; int render_op; - unsigned char anti_alias : 1; + Evas_Bool anti_alias : 1; }; struct _RGBA_Pipe_Op @@ -448,15 +448,15 @@ /* Colorspace stuff. */ struct { void *data; - unsigned int no_free : 1; - unsigned int dirty : 1; + Evas_Bool no_free : 1; + Evas_Bool dirty : 1; } cs; /* RGBA stuff */ struct { DATA32 *data; - unsigned int no_free : 1; + Evas_Bool no_free : 1; } image; }; @@ -483,7 +483,7 @@ float angle; int direction; float offset; - unsigned char has_alpha : 1; + Evas_Bool has_alpha : 1; } map; struct { @@ -515,8 +515,8 @@ int references; - unsigned char imported_data : 1; - unsigned char has_alpha : 1; + Evas_Bool imported_data : 1; + Evas_Bool has_alpha : 1; }; struct _RGBA_Gradient_Type @@ -698,12 +698,12 @@ struct _Tilebuf_Tile { - unsigned char redraw : 1; + Evas_Bool redraw : 1; /* FIXME: need these flags later - but not now */ /* - int done : 1; - int edge : 1; - int from : 1; + Evas_Bool done : 1; + Evas_Bool edge : 1; + Evas_Bool from : 1; struct { int dx, dy; |
From: Enlightenment C. <no...@cv...> - 2008-05-28 18:00:31
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib/canvas Modified Files: evas_object_main.c Log Message: Fix typo! =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/canvas/evas_object_main.c,v retrieving revision 1.68 retrieving revision 1.69 diff -u -3 -r1.68 -r1.69 --- evas_object_main.c 26 May 2008 13:24:24 -0000 1.68 +++ evas_object_main.c 28 May 2008 18:00:04 -0000 1.69 @@ -654,7 +654,7 @@ MAGIC_CHECK_END(); if (obj->delete_me) return; - if (obj->size_hints) + if (!obj->size_hints) obj->size_hints = calloc(1, sizeof(*obj->size_hints)); obj->size_hints->min.w = w; @@ -712,7 +712,7 @@ MAGIC_CHECK_END(); if (obj->delete_me) return; - if (obj->size_hints) + if (!obj->size_hints) obj->size_hints = calloc(1, sizeof(*obj->size_hints)); obj->size_hints->max.w = w; @@ -770,7 +770,8 @@ MAGIC_CHECK_END(); if (obj->delete_me) return; - if (obj->size_hints) obj->size_hints = calloc(1, sizeof(*obj->size_hints)); + if (!obj->size_hints) + obj->size_hints = calloc(1, sizeof(*obj->size_hints)); obj->size_hints->request.w = w; obj->size_hints->request.h = h; @@ -832,7 +833,7 @@ MAGIC_CHECK_END(); if (obj->delete_me) return; - if (obj->size_hints) + if (!obj->size_hints) obj->size_hints = calloc(1, sizeof(*obj->size_hints)); obj->size_hints->aspect.mode = aspect; |
From: Enlightenment C. <no...@cv...> - 2008-05-28 19:27:46
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/modules/engines/software_sdl Modified Files: evas_engine.c Log Message: Mark as dirty, fixes emotion usage. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_sdl/evas_engine.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- evas_engine.c 12 Apr 2008 00:32:28 -0000 1.9 +++ evas_engine.c 28 May 2008 19:27:41 -0000 1.10 @@ -284,10 +284,14 @@ _sdl_image_dirty_region(Engine_Image_Entry *eim, int x, int y, int w, int h) { SDL_Engine_Image_Entry *dst; + RGBA_Image *im; dst = (SDL_Engine_Image_Entry *) eim; SDL_UpdateRect(dst->surface, x, y, w, h); + + im = (RGBA_Image *)eim->src; + im->flags |= RGBA_IMAGE_IS_DIRTY; } static void |
From: Enlightenment C. <no...@cv...> - 2008-05-28 19:28:14
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/modules/engines/software_16_sdl Modified Files: evas_engine.c Log Message: Mark as dirty, fixes emotion usage. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/modules/engines/software_16_sdl/evas_engine.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- evas_engine.c 12 Apr 2008 02:11:07 -0000 1.1 +++ evas_engine.c 28 May 2008 19:27:41 -0000 1.2 @@ -1120,10 +1120,14 @@ _sdl16_image_dirty_region(Engine_Image_Entry *eim, int x, int y, int w, int h) { SDL_Engine_Image_Entry *dst; + RGBA_Image *im; dst = (SDL_Engine_Image_Entry *) eim; SDL_UpdateRect(dst->surface, x, y, w, h); + + im = (RGBA_Image *)eim->src; + im->flags |= RGBA_IMAGE_IS_DIRTY; } static int |
From: Enlightenment C. <no...@cv...> - 2008-06-03 20:33:48
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib/canvas Modified Files: evas_callbacks.c Log Message: Add evas_object_event_callback_del_full() This will check both function and data before removing the callback, this is useful when you have lots of children monitoring parent, when one child want to remove its monitoring function, others will remain. Name is quite difficult to choose, I opted for "_full", but could be "_with_data" or similar. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/canvas/evas_callbacks.c,v retrieving revision 1.33 retrieving revision 1.34 diff -u -3 -r1.33 -r1.34 --- evas_callbacks.c 26 Feb 2008 09:16:17 -0000 1.33 +++ evas_callbacks.c 3 Jun 2008 20:33:40 -0000 1.34 @@ -406,3 +406,63 @@ } return NULL; } + +/** + * Delete a callback function from an object + * @param obj Object to remove a callback from + * @param type The type of event that was triggering the callback + * @param func The function that was to be called when the event was triggered + * @param data The data pointer that was to be passed to the callback + * @return The data pointer that was to be passed to the callback + * + * This function removes the most recently added callback from the object + * @p obj which was triggered by the event type @p type and was calling the + * function @p func with data @p data when triggered. If the removal is + * successful it will also return the data pointer that was passed to + * evas_object_event_callback_add() (that will be the same as the parameter) + * when the callback was added to the object. If not successful NULL will be + * returned. + * + * Example: + * @code + * extern Evas_Object *object; + * void *my_data; + * void up_callback(void *data, Evas *e, Evas_Object *obj, void *event_info); + * + * my_data = evas_object_event_callback_del_full(object, EVAS_CALLBACK_MOUSE_UP, up_callback, data); + * @endcode + * @ingroup Evas_Object_Callback_Group + */ +EAPI void * +evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), const void *data) +{ + /* MEM OK */ + Evas_Object_List *l; + + MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); + return NULL; + MAGIC_CHECK_END(); + + if (!func) return NULL; + + if (!obj->callbacks) return NULL; + + for (l = obj->callbacks->callbacks; l; l = l->next) + { + Evas_Func_Node *fn; + + fn = (Evas_Func_Node *)l; + if ((fn->func == func) && (fn->type == type) && (fn->data == data) && (!fn->delete_me)) + { + void *data; + + data = fn->data; + fn->delete_me = 1; + obj->callbacks->deletions_waiting = 1; + if (!obj->callbacks->walking_list) + evas_object_event_callback_clear(obj); + return data; + } + } + return NULL; +} |
From: Enlightenment C. <no...@cv...> - 2008-06-03 20:33:48
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib Modified Files: Evas.h Log Message: Add evas_object_event_callback_del_full() This will check both function and data before removing the callback, this is useful when you have lots of children monitoring parent, when one child want to remove its monitoring function, others will remain. Name is quite difficult to choose, I opted for "_full", but could be "_with_data" or similar. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/Evas.h,v retrieving revision 1.125 retrieving revision 1.126 diff -u -3 -r1.125 -r1.126 --- Evas.h 26 May 2008 13:17:12 -0000 1.125 +++ Evas.h 3 Jun 2008 20:33:40 -0000 1.126 @@ -865,6 +865,7 @@ EAPI void evas_object_event_callback_add (Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), const void *data); EAPI void *evas_object_event_callback_del (Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info)); + EAPI void *evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), const void *data); EAPI int evas_async_events_fd_get (void); EAPI int evas_async_events_process (void); |
From: Enlightenment C. <no...@cv...> - 2008-06-28 15:30:00
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/evas Dir : e17/libs/evas/src/lib/engines/common Modified Files: evas_pipe.c Log Message: Destroy pthread_attr when we do not need it anymore. pthread manual says it is safe to destroy them after they are used with pthread_create: "If the attributes specified by attr are modified later, the threadâs attributes shall not be affected." =================================================================== RCS file: /cvs/e/e17/libs/evas/src/lib/engines/common/evas_pipe.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- evas_pipe.c 31 May 2008 04:16:39 -0000 1.12 +++ evas_pipe.c 28 Jun 2008 15:29:57 -0000 1.13 @@ -141,6 +141,7 @@ /* setup initial locks */ pthread_create(&(thinfo[i].thread_id), &attr, evas_common_pipe_thread, &(thinfo[i])); + pthread_attr_destroy(&attr); } } y = 0; |