netstar pushed a commit to branch master. http://git.enlightenment.org/apps/evisum.git/commit/?id=7bbb821d711c376ed0b27cfc65c148e9cc9fdcbb
commit 7bbb821d711c376ed0b27cfc65c148e9cc9fdcbb Author: Alastair Poole <nets...@gmail.com> Date: Sun May 9 12:54:19 2021 +0100 icon_cache: openbsd changes. Same arch different processor different results, something is getting clobbered, but not by us. This is ok. --- src/bin/ui/evisum_ui.c | 3 --- src/bin/ui/ui_process_list.c | 7 +++++-- src/bin/ui/ui_process_view.c | 14 +++++++++++--- src/bin/ui/ui_util.c | 26 ++++++++++++-------------- src/bin/ui/ui_util.h | 8 ++++---- 5 files changed, 32 insertions(+), 26 deletions(-) diff --git a/src/bin/ui/evisum_ui.c b/src/bin/ui/evisum_ui.c index 25a45c9..b0b6d41 100644 --- a/src/bin/ui/evisum_ui.c +++ b/src/bin/ui/evisum_ui.c @@ -738,7 +738,6 @@ evisum_ui_activate(Evisum_Ui *ui, Evisum_Action action, int pid) void evisum_ui_shutdown(Evisum_Ui *ui) { - evisum_icon_cache_shutdown(); evisum_ui_config_save(ui); ecore_thread_cancel(ui->background_poll_thread); @@ -763,8 +762,6 @@ evisum_ui_init(void) evisum_ui_config_load(ui); - evisum_icon_cache_init(); - _ui_init_system_probe(ui); return ui; diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c index 88fd201..712fdf9 100644 --- a/src/bin/ui/ui_process_list.c +++ b/src/bin/ui/ui_process_list.c @@ -27,6 +27,7 @@ typedef struct { Ecore_Thread *thread; Evisum_Ui_Cache *cache; + Eina_Hash *icon_cache; Ecore_Event_Handler *handler; Eina_Hash *cpu_times; Eina_Bool skip_wait; @@ -742,7 +743,7 @@ _content_get(void *data, Evas_Object *obj, const char *source) evas_object_size_hint_min_set(rec, w, 1); evas_object_show(lb); - const char *new = evisum_icon_path_get(evisum_icon_cache_find(proc)); + const char *new = evisum_icon_path_get(evisum_icon_cache_find(wd->icon_cache, proc)); const char *old = NULL; o = evas_object_data_get(it->obj, "icon"); elm_image_file_get(o, &old, NULL); @@ -1547,7 +1548,7 @@ _item_menu_create(Win_Data *wd, Proc_Info *proc) stopped = !(!strcmp(proc->state, "stop")); menu_it = elm_menu_item_add(menu, NULL, - evisum_icon_path_get(evisum_icon_cache_find(proc)), + evisum_icon_path_get(evisum_icon_cache_find(wd->icon_cache, proc)), proc->command, NULL, NULL); menu_it2 = elm_menu_item_add(menu, menu_it, evisum_icon_path_get("actions"), @@ -2340,6 +2341,7 @@ _win_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, ecore_thread_wait(wd->thread, 0.5); ecore_event_handler_del(wd->handler); + evisum_icon_cache_del(wd->icon_cache); wd->thread = NULL; ui->proc.win = NULL; @@ -2447,6 +2449,7 @@ ui_process_list_win_add(Evisum_Ui *ui) elm_object_content_set(win, tb); wd->cache = evisum_ui_item_cache_new(wd->glist, _item_create, 30); + wd->icon_cache = evisum_icon_cache_new(); wd->cpu_times = eina_hash_int64_new(_cpu_times_free_cb); evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, diff --git a/src/bin/ui/ui_process_view.c b/src/bin/ui/ui_process_view.c index 87476e8..b248276 100644 --- a/src/bin/ui/ui_process_view.c +++ b/src/bin/ui/ui_process_view.c @@ -31,6 +31,8 @@ typedef struct Eina_Bool kthreads_has_rss; + Eina_Hash *icon_cache; + struct { Evas_Object *entry_cmd; @@ -570,14 +572,17 @@ static Evas_Object * _children_icon_get(void *data, Evas_Object *obj, const char *part) { Proc_Info *proc; + Win_Data *wd; Evas_Object *ic = elm_icon_add(obj); + proc = data; + wd = evas_object_data_get(obj, "windata"); if (!strcmp(part, "elm.swallow.icon")) { elm_icon_standard_set(ic, evisum_icon_path_get( - evisum_icon_cache_find(proc))); + evisum_icon_cache_find(wd->icon_cache, proc))); } evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1); @@ -1158,7 +1163,7 @@ _general_tab_add(Evas_Object *parent, Win_Data *wd) evas_object_size_hint_align_set(ic, FILL, FILL); elm_icon_standard_set(ic, evisum_icon_path_get( - evisum_icon_cache_find(proc))); + evisum_icon_cache_find(wd->icon_cache, proc))); evas_object_show(ic); proc_info_free(proc); elm_table_pack(tb, ic, 0, i, 1, 1); @@ -1514,7 +1519,7 @@ _children_tab_add(Evas_Object *parent, Win_Data *wd) elm_object_content_set(fr, bx); wd->children.glist = glist = elm_genlist_add(parent); - evas_object_data_set(glist, "ui", wd); + evas_object_data_set(glist, "windata", wd); elm_object_focus_allow_set(glist, 1); elm_genlist_homogeneous_set(glist, 1); elm_genlist_select_mode_set(glist, ELM_OBJECT_SELECT_MODE_DEFAULT); @@ -1729,6 +1734,8 @@ _win_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, if (wd->threads.cache) evisum_ui_item_cache_free(wd->threads.cache); + evisum_icon_cache_del(wd->icon_cache); + evas_object_del(win); free(wd); @@ -1795,6 +1802,7 @@ ui_process_view_win_add(int pid, Evisum_Proc_Action action) wd->threads.cache = NULL; wd->threads.sort_reverse = 1; wd->threads.sort_cb = _sort_by_cpu_usage; + wd->icon_cache = evisum_icon_cache_new(); proc = proc_info_by_pid(pid); if (!proc) diff --git a/src/bin/ui/ui_util.c b/src/bin/ui/ui_util.c index ce7aa25..b632846 100644 --- a/src/bin/ui/ui_util.c +++ b/src/bin/ui/ui_util.c @@ -5,11 +5,6 @@ #define ARRAY_SIZE(n) sizeof(n) / sizeof(n[0]) -#if !defined(__OpenBSD__) -static -#endif -Eina_Hash *_icon_cache; - Evas_Object * evisum_ui_tab_add(Evas_Object *parent, Evas_Object **alias, const char *text, Evas_Smart_Cb clicked_cb, void *data) @@ -158,21 +153,24 @@ _icon_cache_free_cb(void *data) free(ic_name); } -void -evisum_icon_cache_init(void) +Eina_Hash * +evisum_icon_cache_new(void) { - _icon_cache = NULL; - _icon_cache = eina_hash_string_superfast_new(_icon_cache_free_cb); + Eina_Hash *icon_cache; + + icon_cache = eina_hash_string_superfast_new(_icon_cache_free_cb); + + return icon_cache; } void -evisum_icon_cache_shutdown(void) +evisum_icon_cache_del(Eina_Hash *icon_cache) { - eina_hash_free(_icon_cache); + eina_hash_free(icon_cache); } const char * -evisum_icon_cache_find(const Proc_Info *proc) +evisum_icon_cache_find(Eina_Hash *icon_cache, const Proc_Info *proc) { Efreet_Desktop *e; const char *name, *cmd; @@ -187,7 +185,7 @@ evisum_icon_cache_find(const Proc_Info *proc) cmd = proc->command; - exists = eina_hash_find(_icon_cache, cmd); + exists = eina_hash_find(icon_cache, cmd); if (exists) return exists; if (!strncmp(cmd, "enlightenment", 13)) return "e"; @@ -201,7 +199,7 @@ evisum_icon_cache_find(const Proc_Info *proc) else name = cmd; - eina_hash_add(_icon_cache, cmd, strdup(name)); + eina_hash_add(icon_cache, cmd, strdup(name)); efreet_desktop_free(e); diff --git a/src/bin/ui/ui_util.h b/src/bin/ui/ui_util.h index 1eddf38..4d6df31 100644 --- a/src/bin/ui/ui_util.h +++ b/src/bin/ui/ui_util.h @@ -16,14 +16,14 @@ #define UI_CHILD_WIN_WIDTH 360 #define UI_CHILD_WIN_HEIGHT 360 -void -evisum_icon_cache_init(void); +Eina_Hash * +evisum_icon_cache_new(void); void -evisum_icon_cache_shutdown(void); +evisum_icon_cache_del(Eina_Hash *icon_cache); const char * -evisum_icon_cache_find(const Proc_Info *proc); +evisum_icon_cache_find(Eina_Hash *icon_cache, const Proc_Info *proc); Evas_Object * evisum_ui_tab_add(Evas_Object *parent, Evas_Object **alias, const char *text, --