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 --