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

Reply via email to