From 22ccdc48adcb861ff716a928ae80917032a7d598 Mon Sep 17 00:00:00 2001 From: "Godly T.Alias" Date: Mon, 4 Nov 2019 20:17:41 +0530 Subject: [PATCH] [Genlist] Optimization for genlist clear Avoid block calculations and cache operations during genlist clear Change-Id: I16a35d166a71d9f4b57aa49b62758f65e3d66ced Signed-off-by: Godly T.Alias --- src/lib/elementary_tizen/elm_genlist.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/lib/elementary_tizen/elm_genlist.c b/src/lib/elementary_tizen/elm_genlist.c index e3c4485..a541c7a 100644 --- a/src/lib/elementary_tizen/elm_genlist.c +++ b/src/lib/elementary_tizen/elm_genlist.c @@ -1162,7 +1162,7 @@ _item_unrealize(Elm_Gen_Item *it, } } - _item_cache_push(it, cache); + _item_cache_push(it, cache); it->realized = EINA_FALSE; } @@ -4928,7 +4928,7 @@ _item_block_del(Elm_Gen_Item *it) if (it->parent) it->parent->item->items = eina_list_remove(it->parent->item->items, EO_OBJ(it)); - else + else if (!sd->on_clear) { _item_block_position_update(il->next, itb->position); } @@ -4940,7 +4940,7 @@ _item_block_del(Elm_Gen_Item *it) itb = NULL; if (itbn) itbn->calc_done = EINA_FALSE; } - else + else if (!sd->on_clear) { if (itb->count < (itb->sd->max_items_per_block / 2)) { @@ -6913,6 +6913,7 @@ _internal_elm_genlist_clear(Evas_Object *obj) Elm_Gen_Item *it; sd->on_clear = EINA_TRUE; + sd->no_cache = EINA_TRUE; eina_hash_free_buckets(sd->size_caches); elm_object_item_focus_set(sd->focused_item, EINA_FALSE); @@ -7018,6 +7019,7 @@ _internal_elm_genlist_clear(Evas_Object *obj) } sd->on_clear = EINA_FALSE; + sd->no_cache = EINA_FALSE; } EOLIAN static Evas_Object * -- 2.7.4