On Fri, Apr 6, 2012 at 4:10 PM, Enlightenment SVN <no-re...@enlightenment.org> wrote: > Log: > elm genlist: Get the stringlist only when it does not exist. Free the > stringlist when we change the item class. > > Author: seoz > Date: 2012-04-06 00:10:29 -0700 (Fri, 06 Apr 2012) > New Revision: 69946 > Trac: http://trac.enlightenment.org/e/changeset/69946 > > Modified: > trunk/elementary/src/lib/elm_genlist.c > > Modified: trunk/elementary/src/lib/elm_genlist.c > =================================================================== > --- trunk/elementary/src/lib/elm_genlist.c 2012-04-06 07:10:26 UTC (rev > 69945) > +++ trunk/elementary/src/lib/elm_genlist.c 2012-04-06 07:10:29 UTC (rev > 69946) > @@ -1904,7 +1904,8 @@ > const Eina_List *l; > const char *key; > > - *source = elm_widget_stringlist_get(edje_object_data_get(target, > "texts")); > + if (!(*source)) > + *source = elm_widget_stringlist_get(edje_object_data_get(target, > "texts")); > EINA_LIST_FOREACH(*source, l, key) > { > if (parts && fnmatch(parts, key, FNM_PERIOD)) > @@ -2010,7 +2011,8 @@ > const char *key; > char buf[4096]; > > - *source = elm_widget_stringlist_get(edje_object_data_get(target, > "states")); > + if (!(*source)) > + *source = elm_widget_stringlist_get(edje_object_data_get(target, > "states")); > EINA_LIST_FOREACH(*source, l, key) > { > if (parts && fnmatch(parts, key, FNM_PERIOD)) > @@ -2171,8 +2173,9 @@ > if (it->flipped) > { > edje_object_signal_emit(VIEW(it), "elm,state,flip,enabled", > "elm"); > - it->item->flip_contents = > - elm_widget_stringlist_get(edje_object_data_get(VIEW(it), > "flips")); > + if (!(it->item->flip_contents)) > + it->item->flip_contents = > + elm_widget_stringlist_get(edje_object_data_get(VIEW(it), > "flips")); > it->item->flip_content_objs = > _item_mode_content_realize(it, VIEW(it), > &it->item->flip_contents, NULL, > @@ -3271,8 +3274,9 @@ > assert(eina_list_count(it->item->deco_it_content_objs) == 0); > > _item_text_realize(it, it->item->deco_it_view, &it->item->deco_it_texts, > NULL); > - it->item->deco_it_contents = > - elm_widget_stringlist_get(edje_object_data_get(it->item->deco_it_view, > "contents")); > + if (!it->item->deco_it_contents) > + it->item->deco_it_contents = > + > elm_widget_stringlist_get(edje_object_data_get(it->item->deco_it_view, > "contents")); > it->item->deco_it_content_objs = > _item_mode_content_realize(it, it->item->deco_it_view, > &it->item->deco_it_contents, NULL, > @@ -3425,8 +3429,9 @@ > > _item_text_realize(it, it->deco_all_view, &it->item->deco_all_texts, NULL); > if (it->flipped) edje_object_signal_emit(it->deco_all_view, > "elm,state,flip,enabled", "elm"); > - it->item->deco_all_contents = > - elm_widget_stringlist_get(edje_object_data_get(it->deco_all_view, > "contents")); > + if (!it->item->deco_all_contents) > + it->item->deco_all_contents = > + elm_widget_stringlist_get(edje_object_data_get(it->deco_all_view, > "contents")); > it->item->deco_all_content_objs = > _item_mode_content_realize(it, it->deco_all_view, > &it->item->deco_all_contents, NULL, > @@ -5100,6 +5105,34 @@ > if (_it->generation < _it->wd->generation) return; > _it->itc = itc; > _it->item->nocache_once = EINA_TRUE; > + > + elm_widget_stringlist_free(_it->texts); > + _it->texts = NULL; > + elm_widget_stringlist_free(_it->contents); > + _it->contents = NULL; > + elm_widget_stringlist_free(_it->states); > + _it->states = NULL; > + > + if (_it->flipped) > + { > + elm_widget_stringlist_free(_it->item->flip_contents); > + _it->item->flip_contents = NULL; > + } > + if (_it->item->deco_it_view) > + { > + elm_widget_stringlist_free(_it->item->deco_it_texts); > + _it->item->deco_it_texts = NULL; > + elm_widget_stringlist_free(_it->item->deco_it_contents); > + _it->item->deco_it_contents = NULL; > + } > + if (_it->wd->decorate_all_mode) > + { > + elm_widget_stringlist_free(_it->item->deco_all_texts); > + _it->item->deco_all_texts = NULL; > + elm_widget_stringlist_free(_it->item->deco_all_contents); > + _it->item->deco_all_contents = NULL; > + } > + > elm_genlist_item_update(it); > }
elm_genlist_item_item_class_update() calls _update_job() _update_job() calls item unrealizing. how about to move freeing widget string routine to item_unrealize? > > > > ------------------------------------------------------------------------------ > For Developers, A Lot Can Happen In A Second. > Boundary is the first to Know...and Tell You. > Monitor Your Applications in Ultra-Fine Resolution. Try it FREE! > http://p.sf.net/sfu/Boundary-d2dvs2 > _______________________________________________ > enlightenment-svn mailing list > enlightenment-...@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-svn ------------------------------------------------------------------------------ For Developers, A Lot Can Happen In A Second. Boundary is the first to Know...and Tell You. Monitor Your Applications in Ultra-Fine Resolution. Try it FREE! http://p.sf.net/sfu/Boundary-d2dvs2 _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel