On Friday, November 26, 2010, Enlightenment SVN <no-re...@enlightenment.org> 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 @@ > > enlightenment-...@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-svn > -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -------------------------------------- MSN: barbi...@gmail.com 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 enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel