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