genlist : clear item cache when current item class need to be freed
authorSangHyeon Lee <sh10233.lee@samsung.com>
Wed, 23 Nov 2016 12:14:01 +0000 (21:14 +0900)
committerTaehyub Kim <taehyub.kim@samsung.com>
Tue, 29 Nov 2016 12:32:35 +0000 (21:32 +0900)
Change-Id: I92b361ae0e21c9ef0eb03f106aaa9fc953fab2e4

src/mobile_lib/elm_genlist.c

index d44b69a7121bbb79d9dd5841240bd39086a7dfa3..7710eb2eb672ae62253a6e0bb4f3462c8efeeeca 100644 (file)
@@ -6012,6 +6012,17 @@ end:
    if (it->itc->func.del)
      it->itc->func.del((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it));
 
+   if (it->itc->refcount <= 1)
+     {
+        Eina_Inlist *l;
+        Item_Cache *ic;
+        EINA_INLIST_FOREACH_SAFE(sd->item_cache, l, ic)
+          {
+             if (it->itc == ic->item_class)
+               _item_cache_free(sd, ic);
+          }
+     }
+
    elm_genlist_item_class_unref((Elm_Genlist_Item_Class *)it->itc);
    free(GL_IT(it));
    GL_IT(it) = NULL;