netstar pushed a commit to branch master. http://git.enlightenment.org/apps/evisum.git/commit/?id=fbf51c4f17a35434b64b70e9f012b901f7aeaf97
commit fbf51c4f17a35434b64b70e9f012b901f7aeaf97 Author: Alastair Poole <nets...@gmail.com> Date: Tue Nov 3 16:06:04 2020 +0000 disk: build back burgers --- src/bin/ui/ui_disk.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/bin/ui/ui_disk.c b/src/bin/ui/ui_disk.c index e1a3591..8345aca 100644 --- a/src/bin/ui/ui_disk.c +++ b/src/bin/ui/ui_disk.c @@ -14,6 +14,8 @@ typedef struct Ecore_Timer *timer; } Widgets; +static Eina_Lock _lock; + static Widgets *_widgets = NULL; static void @@ -184,6 +186,8 @@ _disks_poll_timer_cb(void *data) File_System *fs; Eina_List *mounted = NULL; + eina_lock_take(&_lock); + disks = disks_get(); EINA_LIST_FREE(disks, path) { @@ -206,6 +210,8 @@ _disks_poll_timer_cb(void *data) it = elm_genlist_item_next_get(it); } + eina_lock_release(&_lock); + return EINA_TRUE; } @@ -222,6 +228,7 @@ _win_del_cb(void *data, Evas_Object *obj EINA_UNUSED, free(_widgets); } + eina_lock_free(&_lock); evas_object_del(obj); ui->disk.win = NULL; @@ -229,6 +236,12 @@ _win_del_cb(void *data, Evas_Object *obj EINA_UNUSED, ecore_main_loop_quit(); } +static void +_win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + _disks_poll_timer_cb(NULL); +} + void ui_win_disk_add(Ui *ui) { @@ -242,6 +255,7 @@ ui_win_disk_add(Ui *ui) return; } + eina_lock_new(&_lock); ui->disk.win = win = elm_win_util_standard_add("evisum", _("Storage")); evas_object_size_hint_weight_set(win, EXPAND, EXPAND); @@ -326,11 +340,14 @@ ui_win_disk_add(Ui *ui) evas_object_smart_callback_add(win, "delete,request", _win_del_cb, ui); evisum_child_window_show(ui->win, win); + evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, + _win_resize_cb, NULL); + w->cache = evisum_ui_item_cache_new(genlist, _item_create, 10); - _disks_poll_timer_cb(ui); + _disks_poll_timer_cb(NULL); - w->timer = ecore_timer_add(3.0, _disks_poll_timer_cb, ui); + w->timer = ecore_timer_add(3.0, _disks_poll_timer_cb, NULL); } --