On Friday, November 26, 2010, Enlightenment SVN
<[email protected]> wrote:
> Log:
> evas -> use mempool for many objects and things. but.. disable it for
> now. use old calloc+free thing for 1.0 and enable mpool for 1.1. this
> is just done in advance but disabled for some testing purposes looking
> for some bugs.
Why do that option inside Evas? Just use MP and force it to use
"passthrough", then it will use malloc/free
>
> Author: raster
> Date: 2010-11-26 02:01:18 -0800 (Fri, 26 Nov 2010)
> New Revision: 55006
>
> Modified:
> trunk/evas/src/lib/canvas/evas_callbacks.c
> trunk/evas/src/lib/canvas/evas_object_image.c
> trunk/evas/src/lib/canvas/evas_object_line.c
> trunk/evas/src/lib/canvas/evas_object_main.c
> trunk/evas/src/lib/canvas/evas_object_polygon.c
> trunk/evas/src/lib/canvas/evas_object_rectangle.c
> trunk/evas/src/lib/canvas/evas_object_smart.c
> trunk/evas/src/lib/canvas/evas_object_smart_clipped.c
> trunk/evas/src/lib/canvas/evas_object_text.c
> trunk/evas/src/lib/canvas/evas_object_textblock.c
> trunk/evas/src/lib/include/evas_private.h
>
> Modified: trunk/evas/src/lib/canvas/evas_callbacks.c
> ===================================================================
> --- trunk/evas/src/lib/canvas/evas_callbacks.c 2010-11-26 09:56:45 UTC (rev
> 55005)
> +++ trunk/evas/src/lib/canvas/evas_callbacks.c 2010-11-26 10:01:18 UTC (rev
> 55006)
> @@ -5,6 +5,10 @@
> static void evas_event_callback_clear(Evas *e);
> int _evas_event_counter = 0;
>
> +EVAS_MEMPOOL(_mp_fn);
> +EVAS_MEMPOOL(_mp_cb);
> +EVAS_MEMPOOL(_mp_pc);
> +
> void
> _evas_post_event_callback_call(Evas *e)
> {
> @@ -19,7 +23,7 @@
> {
> if (!pc->func((void*)pc->data, e)) skip = 1;
> }
> - free(pc);
> + EVAS_MEMPOOL_FREE(_mp_pc, pc);
> }
> _evas_unwalk(e);
> }
> @@ -31,7 +35,7 @@
>
> EINA_LIST_FREE(e->post_events, pc)
> {
> - free(pc);
> + EVAS_MEMPOOL_FREE(_mp_pc, pc);
> }
> _evas_unwalk(e);
> }
> @@ -51,7 +55,7 @@
> if (fn->delete_me)
> {
> *list = eina_inlist_remove(*list, EINA_INLIST_GET(fn));
> - free(fn);
> + EVAS_MEMPOOL_FREE(_mp_fn, fn);
> }
> }
> }
> @@ -65,7 +69,7 @@
> evas_event_callback_list_post_free(&obj->callbacks->callbacks);
> if (!obj->callbacks->callbacks)
> {
> - free(obj->callbacks);
> + EVAS_MEMPOOL_FREE(_mp_cb, obj->callbacks);
> obj->callbacks = NULL;
> }
> }
> @@ -79,7 +83,7 @@
> evas_event_callback_list_post_free(&e->callbacks->callbacks);
> if (!e->callbacks->callbacks)
> {
> - free(e->callbacks);
> + EVAS_MEMPOOL_FREE(_mp_cb, e->callbacks);
> e->callbacks = NULL;
> }
> }
> @@ -100,7 +104,7 @@
> /* MEM OK */
> if (!obj->callbacks) return;
> evas_event_callback_list_post_free(&obj->callbacks->callbacks);
> - free(obj->callbacks);
> + EVAS_MEMPOOL_FREE(_mp_cb, obj->callbacks);
> obj->callbacks = NULL;
> }
>
> @@ -120,7 +124,7 @@
> /* MEM OK */
> if (!e->callbacks) return;
> evas_event_callback_list_post_free(&e->callbacks->callbacks);
> - free(e->callbacks);
> + EVAS_MEMPOOL_FREE(_mp_cb, e->callbacks);
> e->callbacks = NULL;
> }
>
> @@ -440,19 +444,22 @@
>
> if (!func) return;
>
> - fn = evas_mem_calloc(sizeof(Evas_Func_Node));
> + if (!obj->callbacks)
> + {
> + EVAS_MEMPOOL_INIT(_mp_cb, "evas_callbacks", Evas_Callbacks, 512, );
> + obj->callbacks = EVAS_MEMPOOL_ALLOC(_mp_cb, Evas_Callbacks);
> + if (!obj->callbacks) return;
> + EVAS_MEMPOOL_PREP(_mp_cb, obj->callbacks, Evas_Callbacks);
> + }
> +
> + EVAS_MEMPOOL_INIT(_mp_fn, "evas_func_node", Evas_Func_Node, 2048, );
> + fn = EVAS_MEMPOOL_ALLOC(_mp_fn, Evas_Func_Node);
> if (!fn) return;
> + EVAS_MEMPOOL_PREP(_mp_fn, fn, Evas_Func_Node);
> fn->func = func;
> fn->data = (void *)data;
> fn->type = type;
>
> - if (!obj->callbacks)
> - obj->callbacks = evas_mem_calloc(sizeof(Evas_Callbacks));
> - if (!obj->callbacks)
> - {
> - free(fn);
> - return;
> - }
> obj->callbacks->callbacks =
> eina_inlist_prepend(obj->callbacks->callbacks, EINA_INLIST_GET(fn));
> }
> @@ -648,19 +655,22 @@
>
> if (!func) return;
>
> - fn = evas_mem_calloc(sizeof(Evas_Func_Node));
> + if (!e->callbacks)
> + {
> + EVAS_MEMPOOL_INIT(_mp_cb, "evas_callbacks", Evas_Callbacks, 512, );
> + e->callbacks = EVAS_MEMPOOL_ALLOC(_mp_cb, Evas_Callbacks);
> + if (!e->callbacks) return;
> + EVAS_MEMPOOL_PREP(_mp_cb, e->callbacks, Evas_Callbacks);
> + }
> +
> + EVAS_MEMPOOL_INIT(_mp_fn, "evas_func_node", Evas_Func_Node, 2048, );
> + fn = EVAS_MEMPOOL_ALLOC(_mp_fn, Evas_Func_Node);
> if (!fn) return;
> + EVAS_MEMPOOL_PREP(_mp_fn, fn, Evas_Func_Node);
> fn->func = func;
> fn->data = (void *)data;
> fn->type = type;
>
> - if (!e->callbacks)
> - e->callbacks = evas_mem_calloc(sizeof(Evas_Callbacks));
> - if (!e->callbacks)
> - {
> - free(fn);
> - return;
> - }
> e->callbacks->callbacks =
> eina_inlist_prepend(e->callbacks->callbacks, EINA_INLIST_GET(fn));
> }
> @@ -809,8 +819,10 @@
> return;
> MAGIC_CHECK_END();
>
> - pc = evas_mem_calloc(sizeof(Evas_Post_Callback));
> + EVAS_MEMPOOL_INIT(_mp_pc, "evas_post_callback", Evas_Post_Callback, 64, );
> + pc = EVAS_MEMPOOL_ALLOC(_mp_pc, Evas_Post_Callback);
> if (!pc) return;
> + EVAS_MEMPOOL_PREP(_mp_pc, pc, Evas_Post_Callback);
> if (e->delete_me) return;
>
> pc->func = func;
>
> Modified: trunk/evas/src/lib/canvas/evas_object_image.c
> ===================================================================
> --- trunk/evas/src/lib/canvas/evas_object_image.c 2010-11-26 09:56:45
> UTC (rev 55005)
> +++ trunk/evas/src/lib/canvas/evas_object_image.c 2010-11-26 10:01:18
> UTC (rev 55006)
> @@ -123,6 +123,8 @@
> * @{
> */
>
> +EVAS_MEMPOOL(_mp_obj);
> +
> /**
> * Creates a new image object on the given evas.
> *
> @@ -2344,7 +2346,10 @@
> Evas_Object_Image *o;
>
> /* alloc obj private data */
> - o = calloc(1, sizeof(Evas_Object_Image));
> + EVAS_MEMPOOL_INIT(_mp_obj, "evas_object_image", Evas_Object_Image, 256,
> NULL);
> + o = EVAS_MEMPOOL_ALLOC(_mp_obj, Evas_Object_Image);
> + if (!o) return NULL;
> + EVAS_MEMPOOL_PREP(_mp_obj, o, Evas_Object_Image);
> o->magic = MAGIC_OBJ_IMAGE;
> o->cur.fill.w = 0;
> o->cur.fill.h = 0;
> @@ -2384,7 +2389,7 @@
> o->magic = 0;
> EINA_LIST_FREE(o->pixel_updates, r)
> eina_rectangle_free(r);
> - free(o);
> + EVAS_MEMPOOL_FREE(_mp_obj, o);
> }
>
> static void
>
> Modified: trunk/evas/src/lib/canvas/evas_object_line.c
> ===================================================================
> --- trunk/evas/src/lib/canvas/evas_object_line.c 2010-11-26 09:56:45
> UTC (rev 55005)
> +++ trunk/evas/src/lib/canvas/evas_object_line.c 2010-11-26 10:01:18
> UTC (rev 55006)
> @@ -78,6 +78,8 @@
> * @{
> */
>
> +EVAS_MEMPOOL(_mp_obj);
> +
> /**
> * Adds a new evas line object to the given evas.
> * @param e The given evas.
> @@ -253,7 +255,10 @@
> Evas_Object_Line *o;
>
> /* alloc obj private data */
> - o = calloc(1, sizeof(Evas_Object_Line));
> + EVAS_MEMPOOL_INIT(_mp_obj, "evas_object_line", Evas_Object_Line, 16,
> NULL);
> + o = EVAS_MEMPOOL_ALLOC(_mp_obj, Evas_Object_Line);
> + if (!o) return NULL;
> + EVAS_MEMPOOL_PREP(_mp_obj, o, Evas_Object_Line);
> o->magic = MAGIC_OBJ_LINE;
> o->cur.x1 = 0;
> o->cur.y1 = 0;
>
> Modified: trunk/evas/src/lib/canvas/evas_object_main.c
> ===================================================================
> --- trunk/evas/src/lib/canvas/evas_object_main.c 2010-11-26 09:56:45
> UTC (rev 55005)
> +++ trunk/evas/src/lib/canvas/evas_object_main.c 2010-11-26 10:01:18
> UTC (rev 55006)
> @@ -1,11 +1,13 @@
> #include "evas_common.h"
> #include "evas_private.h"
>
> +EVAS_MEMPOOL(_mp_obj);
> +EVAS_MEMPOOL(_mp_sh);
> +
> static Eina_Inlist *
> get_layer_objects(Evas_Layer *l)
> {
> - if( !l || !l->objects ) return NULL;
> -
> + if ((!l) || (!l->objects)) return NULL;
> return (EINA_INLIST_GET(l->objects));
> }
>
> @@ -15,9 +17,11 @@
> {
> Evas_Object *obj;
>
> - obj = calloc(1, sizeof(Evas_Object));
> + EVAS_MEMPOOL_INIT(_mp_obj, "evas_object", Evas_Object, 512, NULL);
> + obj = EVAS_MEMPOOL_ALLOC(_mp_obj, Evas_Object);
> if (!obj) return NULL;
> -
> + EVAS_MEMPOOL_PREP(_mp_obj, obj, Evas_Object);
> +
> obj->magic = MAGIC_OBJ;
> obj->cur.scale = 1.0;
> obj->prev.scale = 1.0;
> @@ -51,8 +55,11 @@
> free(node);
> }
> obj->magic = 0;
> - if (obj->size_hints) free(obj->size_hints);
> - free(obj);
> + if (obj->size_hints)
> + {
> + EVAS_MEMPOOL_FREE(_mp_sh, obj->size_hints);
> + }
> + EVAS_MEMPOOL_FREE(_mp_obj, obj);
> }
>
> void
> @@ -587,7 +594,10 @@
> {
> if (obj->size_hints) return;
>
> - obj->size_hints = calloc(1, sizeof(Evas_Size_Hints));
> + EVAS_MEMPOOL_INIT(_mp_sh, "evas_size_hints", Evas_Size_Hints, 512, );
> + obj->size_hints = EVAS_MEMPOOL_ALLOC(_mp_sh, Evas_Size_Hints);
> + if (!obj->size_hints) return;
> + EVAS_MEMPOOL_PREP(_mp_sh, obj->size_hints, Evas_Size_Hints);
> obj->size_hints->max.w = -1;
> obj->size_hints->max.h = -1;
> obj->size_hints->align.x = 0.5;
>
> Modified: trunk/evas/src/lib/canvas/evas_object_polygon.c
> ===================================================================
> --- trunk/evas/src/lib/canvas/evas_object_polygon.c 2010-11-26 09:56:45
> UTC (rev 55005)
> +++ trunk/evas/src/lib/canvas/evas_object_polygon.c 2010-11-26 10:01:18
> UTC (rev 55006)
> @@ -80,6 +80,8 @@
> * @{
> */
>
> +EVAS_MEMPOOL(_mp_obj);
> +
> /**
> * Adds a new evas polygon object to the given evas.
> * @param e The given evas.
> @@ -281,7 +283,10 @@
> Evas_Object_Polygon *o;
>
> /* alloc obj private data */
> - o = calloc(1, sizeof(Evas_Object_Polygon));
> + EVAS_MEMPOOL_INIT(_mp_obj, "evas_object_polygon", Evas_Object_Polygon,
> 32, NULL);
> + o = EVAS_MEMPOOL_ALLOC(_mp_obj, Evas_Object_Polygon);
> + if (!o) return NULL;
> + EVAS_MEMPOOL_PREP(_mp_obj, o, Evas_Object_Polygon);
> o->magic = MAGIC_OBJ_POLYGON;
> return o;
> }
> @@ -306,7 +311,7 @@
>
> obj->layer->evas->engine.data.context,
>
> o->engine_data);
> o->magic = 0;
> - free(o);
> + EVAS_MEMPOOL_FREE(_mp_obj, o);
> }
>
> static void
>
> Modified: trunk/evas/src/lib/canvas/evas_object_rectangle.c
> ===================================================================
> --- trunk/evas/src/lib/canvas/evas_object_rectangle.c 2010-11-26 09:56:45
> UTC (rev 55005)
> +++ trunk/evas/src/lib/canvas/evas_object_rectangle.c 2010-11-26 10:01:18
> UTC (rev 55006)
> @@ -72,6 +72,8 @@
> * @{
> */
>
> +EVAS_MEMPOOL(_mp_obj);
> +
> /**
> * Adds a rectangle to the given evas.
> * @param e The given evas.
> @@ -125,7 +127,10 @@
> Evas_Object_Rectangle *o;
>
> /* alloc obj private data */
> - o = calloc(1, sizeof(Evas_Object_Rectangle));
> + EVAS_MEMPOOL_INIT(_mp_obj, "evas_object_rectangle",
> Evas_Object_Rectangle, 256, NULL);
> + o = EVAS_MEMPOOL_ALLOC(_mp_obj, Evas_Object_Rectangle);
> + if (!o) return NULL;
> + EVAS_MEMPOOL_PREP(_mp_obj, o, Evas_Object_Rectangle);
> o->magic = MAGIC_OBJ_RECTANGLE;
> return o;
> }
> @@ -142,7 +147,7 @@
> MAGIC_CHECK_END();
> /* free obj */
> o->magic = 0;
> - free(o);
> + EVAS_MEMPOOL_FREE(_mp_obj, o);
> }
>
> static void
>
> Modified: trunk/evas/src/lib/canvas/evas_object_smart.c
> ===================================================================
> --- trunk/evas/src/lib/canvas/evas_object_smart.c 2010-11-26 09:56:45
> UTC (rev 55005)
> +++ trunk/evas/src/lib/canvas/evas_object_smart.c 2010-11-26 10:01:18
> UTC (rev 55006)
> @@ -64,6 +64,9 @@
> NULL
> };
>
> +EVAS_MEMPOOL(_mp_obj);
> +EVAS_MEMPOOL(_mp_cb);
> +
> /* public funcs */
> /**
> * Store a pointer to user data for a smart object.
> @@ -428,7 +431,10 @@
> MAGIC_CHECK_END();
> if (!event) return;
> if (!func) return;
> - cb = calloc(1, sizeof(Evas_Smart_Callback));
> + EVAS_MEMPOOL_INIT(_mp_cb, "evas_smart_callback", Evas_Smart_Callback,
> 512, );
> + cb = EVAS_MEMPOOL_ALLOC(_mp_cb, Evas_Smart_Callback);
> + if (!cb) return;
> + EVAS_MEMPOOL_PREP(_mp_cb, cb, Evas_Smart_Callback);
> cb->event = eina_stringshare_add(event);
> cb->func = func;
> cb->func_data = (void *)data;
> @@ -887,7 +893,7 @@
> {
> o->callbacks = eina_list_remove(o->callbacks, cb);
> if (cb->event) eina_stringshare_del(cb->event);
> - free(cb);
> + EVAS_MEMPOOL_FREE(_mp_cb, cb);
> }
> }
> }
> @@ -925,7 +931,7 @@
> cb = o->callbacks->data;
> o->callbacks = eina_list_remove(o->callbacks, cb);
> if (cb->event) eina_stringshare_del(cb->event);
> - free(cb);
> + EVAS_MEMPOOL_FREE(_mp_cb, cb);
> }
>
> evas_smart_cb_descriptions_resize(&o->callbacks_descriptions, 0);
> @@ -1022,7 +1028,10 @@
> Evas_Object_Smart *o;
>
> /* alloc obj private data */
> - o = calloc(1, sizeof(Evas_Object_Smart));
> + EVAS_MEMPOOL_INIT(_mp_obj, "evas_object_smart", Evas_Object_Smart, 256,
> NULL);
> + o = EVAS_MEMPOOL_ALLOC(_mp_obj, Evas_Object_Smart);
> + if (!o) return NULL;
> + EVAS_MEMPOOL_PREP(_mp_obj, o, Evas_Object_Smart);
> o->magic = MAGIC_OBJ_SMART;
> return o;
> }
> @@ -1039,7 +1048,7 @@
> MAGIC_CHECK_END();
> /* free obj */
> o->magic = 0;
> - free(o);
> + EVAS_MEMPOOL_FREE(_mp_obj, o);
> }
>
> static void
>
> Modified: trunk/evas/src/lib/canvas/evas_object_smart_clipped.c
> ===================================================================
> --- trunk/evas/src/lib/canvas/evas_object_smart_clipped.c 2010-11-26
> 09:56:45 UTC (rev 55005)
> +++ trunk/evas/src/lib/canvas/evas_object_smart_clipped.c 2010-11-26
> 10:01:18 UTC (rev 55006)
> @@ -67,7 +67,7 @@
>
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
>
--
Gustavo Sverzut Barbieri
http://profusion.mobi embedded systems
--------------------------------------
MSN: [email protected]
Skype: gsbarbieri
Mobile: +55 (19) 9225-2202
------------------------------------------------------------------------------
Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
Tap into the largest installed PC base & get more eyes on your game by
optimizing for Intel(R) Graphics Technology. Get started today with the
Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs.
http://p.sf.net/sfu/intelisp-dev2dev
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel