netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=9158d0a8ee3bdd443b6e0c949602c9d9cae57c1f

commit 9158d0a8ee3bdd443b6e0c949602c9d9cae57c1f
Author: Alastair Poole <nets...@gmail.com>
Date:   Sat Mar 13 06:53:42 2021 +0000

    ui: fields selection clean up less blocky.
    
    Need to clean up these objects but do it in chunks...
---
 src/bin/ui/ui_cache.c        | 47 ++++++++++++++++++++++++++++----------------
 src/bin/ui/ui_process_list.c |  4 ++--
 2 files changed, 32 insertions(+), 19 deletions(-)

diff --git a/src/bin/ui/ui_cache.c b/src/bin/ui/ui_cache.c
index 170709e..e40752f 100644
--- a/src/bin/ui/ui_cache.c
+++ b/src/bin/ui/ui_cache.c
@@ -63,23 +63,6 @@ evisum_ui_item_cache_steal(Evisum_Ui_Cache *cache, Eina_List 
*objs)
      }
 }
 
-static Eina_Bool
-_pending_triggered_cb(void *data)
-{
-
-   Eina_List *l, *l_next;
-   Evas_Object *o;
-   Evisum_Ui_Cache *cache = data;
-
-   EINA_LIST_FOREACH_SAFE(cache->pending, l, l_next, o)
-     {
-        cache->pending = eina_list_remove_list(cache->pending, l);
-        evas_object_del(o);
-     }
-   cache->pending_timer = NULL;
-   return 0;
-}
-
 Item_Cache *
 evisum_ui_item_cache_item_get(Evisum_Ui_Cache *cache)
 {
@@ -129,6 +112,36 @@ evisum_ui_item_cache_reset(Evisum_Ui_Cache *cache)
      }
 }
 
+// Delete N at a time and pass on until empty.
+static Eina_Bool
+_pending_triggered_cb(void *data)
+{
+
+   Eina_List *l, *l_next;
+   Evas_Object *o;
+   Evisum_Ui_Cache *cache;
+   int n, i = 0;
+
+   cache = data;
+
+   n = eina_list_count(cache->pending);
+   EINA_LIST_FOREACH_SAFE(cache->pending, l, l_next, o)
+     {
+        cache->pending = eina_list_remove_list(cache->pending, l);
+        evas_object_del(o);
+        i++; n--;
+        if (i == 20) break;
+     }
+   if (n)
+     return 1;
+
+#if 0
+   puts("GONE");
+#endif
+   cache->pending_timer = NULL;
+   return 0;
+}
+
 void
 evisum_ui_item_cache_pending_del(Evisum_Ui_Cache *cache)
 {
diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c
index 7fceb03..1c426af 100644
--- a/src/bin/ui/ui_process_list.c
+++ b/src/bin/ui/ui_process_list.c
@@ -182,6 +182,7 @@ _content_reset(Data *pd)
    elm_genlist_clear(pd->glist);
    if (pd->cache)
      evisum_ui_item_cache_reset(pd->cache);
+   evisum_ui_item_cache_pending_del(pd->cache);
 }
 
 static void
@@ -859,7 +860,7 @@ _process_list_search_trim(Eina_List *list, Data *pd)
 
    EINA_LIST_FOREACH_SAFE(list, l, l_next, proc)
      {
-       if (_process_ignore(pd, proc))
+       if (_process_ignore(pd, proc))
          {
             proc_info_free(proc);
             list = eina_list_remove_list(list, l);
@@ -1036,7 +1037,6 @@ _btn_clicked_state_save(Data *pd, Evas_Object *btn)
 
    if (pd->fields_menu)
      {
-        evisum_ui_item_cache_pending_del(pd->cache);
         evas_object_del(pd->fields_menu);
         pd->fields_menu = NULL;
         return;

-- 


Reply via email to