On Tue, 31 May 2011 09:51:48 -0700 "Enlightenment SVN"
<no-re...@enlightenment.org> said:

cedric: just reverted this in svn. causes font classs bug. segv in e17. :)

> Log:
> edje: improve speed when deleting text member class.
>   
> 
> Author:       cedric
> Date:         2011-05-31 09:51:48 -0700 (Tue, 31 May 2011)
> New Revision: 59850
> Trac:         http://trac.enlightenment.org/e/changeset/59850
> 
> Modified:
>   trunk/edje/ChangeLog trunk/edje/src/lib/edje_main.c
> trunk/edje/src/lib/edje_private.h trunk/edje/src/lib/edje_util.c 
> 
> Modified: trunk/edje/ChangeLog
> ===================================================================
> --- trunk/edje/ChangeLog      2011-05-31 16:43:40 UTC (rev 59849)
> +++ trunk/edje/ChangeLog      2011-05-31 16:51:48 UTC (rev 59850)
> @@ -110,3 +110,7 @@
>          evas freeze and thaw calls. May help in certain pathological
>          situations.
>  
> +2011-05-27  Cedric Bail
> +
> +     * Improve performance by avoiding walking eina_list for nothing
> +     when deleting member_class.
> 
> Modified: trunk/edje/src/lib/edje_main.c
> ===================================================================
> --- trunk/edje/src/lib/edje_main.c    2011-05-31 16:43:40 UTC (rev 59849)
> +++ trunk/edje/src/lib/edje_main.c    2011-05-31 16:51:48 UTC (rev 59850)
> @@ -221,6 +221,8 @@
>          eina_stringshare_del(cb->part);
>          free(cb);
>       }
> +
> +   eina_hash_free(ed->members);
>     free(ed);
>  }
>  
> 
> Modified: trunk/edje/src/lib/edje_private.h
> ===================================================================
> --- trunk/edje/src/lib/edje_private.h 2011-05-31 16:43:40 UTC (rev
> 59849) +++ trunk/edje/src/lib/edje_private.h  2011-05-31 16:51:48 UTC
> (rev 59850) @@ -1004,6 +1004,8 @@
>     int                   table_programs_size;
>     unsigned int          table_parts_size;
>  
> +   Eina_Hash            *members;
> +
>     Edje_Perspective     *persp;
>  
>     struct {
> 
> Modified: trunk/edje/src/lib/edje_util.c
> ===================================================================
> --- trunk/edje/src/lib/edje_util.c    2011-05-31 16:43:40 UTC (rev 59849)
> +++ trunk/edje/src/lib/edje_util.c    2011-05-31 16:51:48 UTC (rev 59850)
> @@ -3674,33 +3674,38 @@
>     /* Get members list */
>     members = eina_hash_find(_edje_text_class_member_hash, text_class);
>  
> -   /* Remove members list */
> -   if (members)
> -     eina_hash_del(_edje_text_class_member_hash, text_class, members);
> -
>     /* Update the member list */
>     members = eina_list_prepend(members, ed);
>  
> -   /* Add the member list back */
> +   /* Don't loose track of members list */
> +   if (!ed->members)
> +     ed->members = eina_hash_string_small_new(NULL);
> +   eina_hash_set(ed->members, text_class, members);
> +
> +   /* Reset the member list to the right pointer */
>     if (!_edje_text_class_member_hash)
>       _edje_text_class_member_hash = eina_hash_string_superfast_new(NULL);
> -   eina_hash_add(_edje_text_class_member_hash, text_class, members);
> +   eina_hash_set(_edje_text_class_member_hash, text_class, members);
>  }
>  
>  void
>  _edje_text_class_member_del(Edje *ed, const char *text_class)
>  {
>     Eina_List *members;
> +   Eina_List *lookup;
>  
>     if ((!ed) || (!text_class)) return;
>     members = eina_hash_find(_edje_text_class_member_hash, text_class);
>     if (!members) return;
>  
> -   eina_hash_del(_edje_text_class_member_hash, text_class, members);
> +   lookup = eina_hash_find(ed->members, text_class);
>  
> -   members = eina_list_remove(members, ed);
> -   if (members)
> -     eina_hash_add(_edje_text_class_member_hash, text_class, members);
> +   if (!lookup) return ;
> +
> +   eina_hash_del(ed->members, text_class, lookup);
> +   members = eina_list_remove_list(members, lookup);
> +
> +   eina_hash_set(_edje_text_class_member_hash, text_class, members);
>  }
>  
>  void
> 
> 
> ------------------------------------------------------------------------------
> Simplify data backup and recovery for your virtual environment with vRanger. 
> Installation's a snap, and flexible recovery options mean your data is safe,
> secure and there when you need it. Data protection magic?
> Nope - It's vRanger. Get your free trial download today. 
> http://p.sf.net/sfu/quest-sfdev2dev
> _______________________________________________
> enlightenment-svn mailing list
> enlightenment-...@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
> 


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    ras...@rasterman.com


------------------------------------------------------------------------------
Simplify data backup and recovery for your virtual environment with vRanger.
Installation's a snap, and flexible recovery options mean your data is safe,
secure and there when you need it. Discover what all the cheering's about.
Get your free trial download today. 
http://p.sf.net/sfu/quest-dev2dev2 
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to