netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=17b18c1af36a1e43e3d2182dc4d840f37ff876e6

commit 17b18c1af36a1e43e3d2182dc4d840f37ff876e6
Author: Alastair Poole <nets...@gmail.com>
Date:   Sat Mar 13 07:20:01 2021 +0000

    cache: add a done callback.
---
 src/bin/ui/ui_cache.c        | 11 +++++++----
 src/bin/ui/ui_cache.h        |  4 +++-
 src/bin/ui/ui_process_list.c | 12 +++++++++++-
 3 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/src/bin/ui/ui_cache.c b/src/bin/ui/ui_cache.c
index 60df052..50cac26 100644
--- a/src/bin/ui/ui_cache.c
+++ b/src/bin/ui/ui_cache.c
@@ -87,10 +87,13 @@ evisum_ui_item_cache_item_get(Evisum_Ui_Cache *cache)
 }
 
 void
-evisum_ui_item_cache_reset(Evisum_Ui_Cache *cache)
+evisum_ui_item_cache_reset(Evisum_Ui_Cache *cache, void (*done_cb)(void 
*data), void *data)
 {
    Item_Cache *it;
 
+   cache->pending_done_cb = done_cb;
+   cache->data = data;
+
    EINA_LIST_FREE(cache->active, it)
      {
         cache->pending = eina_list_append(cache->pending, it->obj);
@@ -136,9 +139,9 @@ _pending_triggered_cb(void *data)
    if (n)
      return 1;
 
-#if 0
-   puts("GONE");
-#endif
+   if (cache->pending_done_cb)
+     cache->pending_done_cb(cache->data);
+
    cache->pending_timer = NULL;
    return 0;
 }
diff --git a/src/bin/ui/ui_cache.h b/src/bin/ui/ui_cache.h
index 2bdcc0d..f258d9e 100644
--- a/src/bin/ui/ui_cache.h
+++ b/src/bin/ui/ui_cache.h
@@ -11,6 +11,8 @@ typedef struct _Evisum_Ui_Cache {
    Evas_Object *parent;
    Evas_Object *(*item_create_cb)(Evas_Object *);
    int          size;
+   void        (*pending_done_cb)(void *);
+   void        *data;
    Ecore_Timer *pending_timer;
    Eina_List   *pending;
 } Evisum_Ui_Cache;
@@ -32,7 +34,7 @@ void
 evisum_ui_item_cache_free(Evisum_Ui_Cache *cache);
 
 void
-evisum_ui_item_cache_reset(Evisum_Ui_Cache *cache);
+evisum_ui_item_cache_reset(Evisum_Ui_Cache *cache, void (*done_cb)(void 
*data), void *data);
 
 void
 evisum_ui_item_cache_steal(Evisum_Ui_Cache *cache, Eina_List *objs);
diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c
index b1cea64..8ba91d5 100644
--- a/src/bin/ui/ui_process_list.c
+++ b/src/bin/ui/ui_process_list.c
@@ -154,6 +154,16 @@ _field_enabled(Proc_Field id)
    return _fields[id].enabled;
 }
 
+static void
+_cache_reset_done_cb(void *data)
+{
+   Data *pd = data;
+   pd->skip_wait = 1;
+#if 0
+   puts("DONE");
+#endif
+}
+
 static void
 _content_reset(Data *pd)
 {
@@ -180,7 +190,7 @@ _content_reset(Data *pd)
    elm_table_pack(pd->tb_content, pd->summary.fr, 0, 2, j, 1);
    evas_object_show(pd->summary.fr);
    elm_genlist_clear(pd->glist);
-   evisum_ui_item_cache_reset(pd->cache);
+   evisum_ui_item_cache_reset(pd->cache, _cache_reset_done_cb, pd);
 }
 
 static void

-- 


Reply via email to