From 68403cf787c426df3466c903f72ab64bddf0a1dc Mon Sep 17 00:00:00 2001 From: Alastair Poole Date: Mon, 28 Dec 2020 20:20:15 +0000 Subject: [PATCH] openbsd: amd64. Firstly, we don't need so many locks as we blocking the main loop. On amd64 OpenBSD 6.8. Static are stored in tbss, so I know TLS was releatively recently added properly, that's one issue. I can only speculate, it's thread related and how mutexes are handled on amd64? As well as having too many threads, also too much blocking of the main loop... Other changes, get rid of almost all sense of a "main" window... Lots of stuff learnt through hacking...My folks are downstairs and I can hear shaging on the TV...Christmas time...it's mean to be... Sheesh --- src/bin/evisum_config.c | 6 +- src/bin/evisum_config.h | 24 +++-- src/bin/main.c | 14 +-- src/bin/ui/ui.c | 122 +++++++++++--------------- src/bin/ui/ui.h | 26 +++--- src/bin/ui/ui_cpu.c | 6 +- src/bin/ui/ui_cpu.h | 2 +- src/bin/ui/ui_disk.c | 73 ++++++++-------- src/bin/ui/ui_disk.h | 2 +- src/bin/ui/ui_memory.c | 26 +++--- src/bin/ui/ui_memory.h | 2 +- src/bin/ui/ui_process_list.c | 165 +++++++++++++++-------------------- src/bin/ui/ui_process_list.h | 2 +- src/bin/ui/ui_sensors.c | 26 ++---- src/bin/ui/ui_sensors.h | 2 +- src/bin/ui/ui_util.c | 25 ++---- src/bin/ui/ui_util.h | 3 - 17 files changed, 233 insertions(+), 293 deletions(-) diff --git a/src/bin/evisum_config.c b/src/bin/evisum_config.c index f272fa4..c0fe291 100644 --- a/src/bin/evisum_config.c +++ b/src/bin/evisum_config.c @@ -42,7 +42,7 @@ _config_check(Evisum_Config *cfg) if (cfg->version > CONFIG_VERSION) _config_fail("version"); - if (cfg->poll_delay <= 0) + if (cfg->proc.poll_delay <= 0) _config_fail("poll"); } @@ -51,8 +51,8 @@ _config_init() { Evisum_Config *cfg = calloc(1, sizeof(Evisum_Config)); cfg->version = CONFIG_VERSION; - cfg->poll_delay = 3; - cfg->show_kthreads = 1; + cfg->proc.poll_delay = 3; + cfg->proc.show_kthreads = 1; return cfg; } diff --git a/src/bin/evisum_config.h b/src/bin/evisum_config.h index 6bad5f8..1c0bdf2 100644 --- a/src/bin/evisum_config.h +++ b/src/bin/evisum_config.h @@ -3,21 +3,27 @@ #include "ui/ui.h" -#define CONFIG_VERSION 0x000a +#define CONFIG_VERSION 0x000b typedef struct _Evisum_Config { int version; - int sort_type; - Eina_Bool sort_reverse; - int width; - int height; - int poll_delay; + Eina_Bool effects; Eina_Bool backgrounds; - Eina_Bool show_kthreads; - Eina_Bool show_user; - Eina_Bool show_desktop; + + struct + { + Evas_Object *win; + int width; + int height; + + Eina_Bool show_kthreads; + Eina_Bool show_user; + int sort_type; + Eina_Bool sort_reverse; + int poll_delay; + } proc; struct { diff --git a/src/bin/main.c b/src/bin/main.c index 88c2f6c..bb69496 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -18,7 +18,7 @@ _shutdown_cb(void *data, int type, void *event EINA_UNUSED) if (ui->mem.win) evas_object_del(ui->mem.win); if (ui->disk.win) evas_object_del(ui->disk.win); if (ui->sensors.win) evas_object_del(ui->sensors.win); - if (ui->win) evas_object_del(ui->win); + if (ui->proc.win) evas_object_del(ui->proc.win); return EINA_FALSE; } @@ -30,7 +30,7 @@ _signals(Ui *ui) } int -main(int argc, char **argv) +elm_main(int argc, char **argv) { Ui *ui; int i, pid = -1; @@ -60,10 +60,6 @@ main(int argc, char **argv) } } - eina_init(); - ecore_init(); - config_init(); - elm_init(argc, argv); elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); #if ENABLE_NLS @@ -90,11 +86,7 @@ main(int argc, char **argv) evisum_ui_shutdown(ui); evisum_server_shutdown(); - elm_shutdown(); - config_shutdown(); - ecore_shutdown(); - eina_shutdown(); - return 0; } +ELM_MAIN() diff --git a/src/bin/ui/ui.c b/src/bin/ui/ui.c index 5dc33fc..f873276 100644 --- a/src/bin/ui/ui.c +++ b/src/bin/ui/ui.c @@ -29,24 +29,27 @@ evisum_ui_config_save(Ui *ui) if (!_evisum_config) return; - if (_evisum_config->poll_delay != ui->settings.poll_delay || - _evisum_config->show_kthreads != ui->settings.show_kthreads) - notify = EINA_TRUE; - - evas_object_geometry_get(ui->win, NULL, NULL, &w, &h); - - _evisum_config->sort_type = ui->settings.sort_type; - _evisum_config->sort_reverse = ui->settings.sort_reverse; - _evisum_config->width = w; - _evisum_config->height = h; _evisum_config->effects = 0; _evisum_config->backgrounds = evisum_ui_backgrounds_enabled_get(); - _evisum_config->poll_delay = ui->settings.poll_delay; - _evisum_config->show_kthreads = ui->settings.show_kthreads; - _evisum_config->show_user = ui->settings.show_user; - _evisum_config->show_desktop = 0; //ui->settings.show_desktop; - proc_info_kthreads_show_set(ui->settings.show_kthreads); + if (ui->proc.win) + { + if (_evisum_config->proc.poll_delay != ui->proc.poll_delay || + _evisum_config->proc.show_kthreads != ui->proc.show_kthreads) + { + notify = EINA_TRUE; + } + + evas_object_geometry_get(ui->proc.win, NULL, NULL, &w, &h); + _evisum_config->proc.width = w; + _evisum_config->proc.height = h; + _evisum_config->proc.sort_type = ui->proc.sort_type; + _evisum_config->proc.sort_reverse = ui->proc.sort_reverse; + _evisum_config->proc.poll_delay = ui->proc.poll_delay; + _evisum_config->proc.show_kthreads = ui->proc.show_kthreads; + _evisum_config->proc.show_user = ui->proc.show_user; + proc_info_kthreads_show_set(ui->proc.show_kthreads); + } if (ui->cpu.win) { @@ -89,16 +92,18 @@ evisum_ui_config_load(Ui *ui) _evisum_config = config_load(); - ui->settings.sort_type = _evisum_config->sort_type; - ui->settings.sort_reverse = _evisum_config->sort_reverse; - ui->settings.poll_delay = _evisum_config->poll_delay; + ui->proc.sort_type = _evisum_config->proc.sort_type; + ui->proc.sort_reverse = _evisum_config->proc.sort_reverse; + ui->proc.poll_delay = _evisum_config->proc.poll_delay; evisum_ui_backgrounds_enabled_set(_evisum_config->backgrounds); - ui->settings.show_kthreads = _evisum_config->show_kthreads; - proc_info_kthreads_show_set(ui->settings.show_kthreads); - ui->settings.show_user = _evisum_config->show_user; - ui->settings.show_desktop = 0; // _evisum_config->show_desktop; + ui->proc.show_kthreads = _evisum_config->proc.show_kthreads; + proc_info_kthreads_show_set(ui->proc.show_kthreads); + ui->proc.show_user = _evisum_config->proc.show_user; + + ui->proc.width = _evisum_config->proc.width; + ui->proc.height = _evisum_config->proc.height; ui->cpu.width = _evisum_config->cpu.width; ui->cpu.height = _evisum_config->cpu.height; @@ -136,7 +141,7 @@ _menu_memory_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, { Ui *ui = data; - ui_win_memory_add(ui); + ui_win_memory_add(ui, ui->menu_parent); } static void @@ -145,7 +150,7 @@ _menu_disk_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, { Ui *ui = data; - ui_win_disk_add(ui); + ui_win_disk_add(ui, ui->menu_parent); } static void @@ -154,7 +159,7 @@ _menu_sensors_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, { Ui *ui = data; - ui_win_sensors_add(ui); + ui_win_sensors_add(ui, ui->menu_parent); } static void @@ -163,7 +168,7 @@ _menu_cpu_activity_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, { Ui *ui = data; - ui_win_cpu_add(ui); + ui_win_cpu_add(ui, ui->menu_parent); } static void @@ -223,9 +228,9 @@ _main_menu_slider_changed_cb(void *data EINA_UNUSED, Evas_Object *obj, { Ui *ui = data; - ui->settings.poll_delay = elm_slider_value_get(obj) + 0.5; + ui->proc.poll_delay = elm_slider_value_get(obj) + 0.5; - if (ui->settings.poll_delay > 1) + if (ui->proc.poll_delay > 1) elm_slider_unit_format_set(obj, _("%1.0f secs")); else elm_slider_unit_format_set(obj, _("%1.0f sec")); @@ -239,29 +244,17 @@ _main_menu_show_threads_changed_cb(void *data EINA_UNUSED, Evas_Object *obj, { Ui *ui = data; - ui->settings.show_kthreads = elm_check_state_get(obj); + ui->proc.show_kthreads = elm_check_state_get(obj); evisum_ui_config_save(ui); } -/* -static void -_main_menu_show_desktop_changed_cb(void *data EINA_UNUSED, Evas_Object *obj, - void *event_info EINA_UNUSED) -{ - Ui *ui = data; - - ui->settings.show_desktop = elm_check_state_get(obj); - evisum_ui_config_save(ui); -} -*/ - static void _main_menu_show_user_changed_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED) { Ui *ui = data; - ui->settings.show_user = elm_check_state_get(obj); + ui->proc.show_user = elm_check_state_get(obj); evisum_ui_config_save(ui); } @@ -274,14 +267,14 @@ _menu_focus_cb(void *data) } void -evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent) +evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent, Evas_Object *obj) { Evas_Object *o, *bx, *bx2, *hbox, *sep, *fr, *sli; Evas_Object *it_focus, *btn, *chk; Evas_Coord ox, oy, ow, oh; - evas_object_geometry_get(parent, &ox, &oy, &ow, &oh); - o = elm_ctxpopup_add(ui->win); + evas_object_geometry_get(obj, &ox, &oy, &ow, &oh); + o = elm_ctxpopup_add(parent); evas_object_size_hint_weight_set(o, EXPAND, EXPAND); evas_object_size_hint_align_set(o, FILL, FILL); elm_object_style_set(o, "noblock"); @@ -301,6 +294,7 @@ evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent) elm_object_content_set(fr, bx); elm_object_content_set(o, fr); + ui->menu_parent = parent; hbox = elm_box_add(o); elm_box_horizontal_set(hbox, 1); evas_object_size_hint_align_set(hbox, FILL, FILL); @@ -363,7 +357,7 @@ evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent) elm_slider_step_set(sli, 1 / 10.0); elm_slider_indicator_format_set(sli, "%1.0f"); elm_slider_unit_format_set(sli, _("%1.0f secs")); - elm_slider_value_set(sli, ui->settings.poll_delay); + elm_slider_value_set(sli, ui->proc.poll_delay); evas_object_size_hint_align_set(sli, FILL, FILL); elm_object_tooltip_text_set(sli, _("Poll delay")); evas_object_smart_callback_add(sli, "slider,drag,stop", @@ -385,7 +379,7 @@ evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent) evas_object_size_hint_weight_set(chk, EXPAND, EXPAND); evas_object_size_hint_align_set(chk, FILL, FILL); elm_object_text_set(chk, _("Show kernel threads?")); - elm_check_state_set(chk, _evisum_config->show_kthreads); + elm_check_state_set(chk, ui->proc.show_kthreads); evas_object_show(chk); evas_object_smart_callback_add(chk, "changed", _main_menu_show_threads_changed_cb, ui); @@ -395,24 +389,12 @@ evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent) evas_object_size_hint_weight_set(chk, EXPAND, EXPAND); evas_object_size_hint_align_set(chk, FILL, FILL); elm_object_text_set(chk, _("User only?")); - elm_check_state_set(chk, _evisum_config->show_user); + elm_check_state_set(chk, ui->proc.show_user); evas_object_show(chk); evas_object_smart_callback_add(chk, "changed", _main_menu_show_user_changed_cb, ui); elm_box_pack_end(bx2, chk); - /* - chk = elm_check_add(bx2); - evas_object_size_hint_weight_set(chk, EXPAND, EXPAND); - evas_object_size_hint_align_set(chk, FILL, FILL); - elm_object_text_set(chk, _("Current desktop session only?")); - elm_check_state_set(chk, _evisum_config->show_desktop); - evas_object_show(chk); - evas_object_smart_callback_add(chk, "changed", - _main_menu_show_desktop_changed_cb, ui); - elm_box_pack_end(bx2, chk); - */ - elm_object_content_set(fr, bx2); elm_box_pack_end(bx, fr); @@ -422,7 +404,7 @@ evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent) ELM_CTXPOPUP_DIRECTION_RIGHT); evas_object_move(o, ox + (ow / 2), oy + oh); evas_object_show(o); - ui->main_menu = o; + ui->menu = o; ecore_timer_add(0.5, _menu_focus_cb, it_focus); } @@ -452,22 +434,22 @@ evisum_ui_activate(Ui *ui, Evisum_Action action, int pid) switch (action) { case EVISUM_ACTION_DEFAULT: - ui_process_list_win_add(ui); + ui_process_list_win_add(ui, NULL); break; case EVISUM_ACTION_PROCESS: _process_win_add(NULL, pid, 3); break; case EVISUM_ACTION_CPU: - ui_win_cpu_add(ui); + ui_win_cpu_add(ui, NULL); break; case EVISUM_ACTION_MEM: - ui_win_memory_add(ui); + ui_win_memory_add(ui, NULL); break; case EVISUM_ACTION_STORAGE: - ui_win_disk_add(ui); + ui_win_disk_add(ui, NULL); break; case EVISUM_ACTION_SENSORS: - ui_win_sensors_add(ui); + ui_win_sensors_add(ui, NULL); break; } } @@ -486,13 +468,15 @@ evisum_ui_init(void) Ui *ui = calloc(1, sizeof(Ui)); if (!ui) return NULL; - ui->settings.poll_delay = 3; - ui->settings.sort_reverse = EINA_FALSE; - ui->settings.sort_type = SORT_BY_PID; + ui->proc.poll_delay = 3; + ui->proc.sort_reverse = EINA_FALSE; + ui->proc.sort_type = SORT_BY_PID; + ui->program_pid = getpid(); EVISUM_EVENT_CONFIG_CHANGED = ecore_event_type_new(); + evisum_ui_backgrounds_enabled_set(0); evisum_ui_config_load(ui); evisum_icon_cache_init(); diff --git a/src/bin/ui/ui.h b/src/bin/ui/ui.h index 2d3f134..5aed947 100644 --- a/src/bin/ui/ui.h +++ b/src/bin/ui/ui.h @@ -26,11 +26,18 @@ typedef struct Ui Evas_Object *win; int width; int height; - } processes; - Evas_Object *win; + int poll_delay; + int sort_type; + Eina_Bool sort_reverse; + Eina_Bool show_self; + Eina_Bool show_kthreads; + Eina_Bool show_user; + } proc; + Evas_Object *win_about; - Evas_Object *main_menu; + Evas_Object *menu; + Evas_Object *menu_parent; struct { @@ -64,17 +71,6 @@ typedef struct Ui Evas_Object *box; Ecore_Thread *thread; } sensors; - - struct - { - int poll_delay; - int sort_type; - Eina_Bool sort_reverse; - Eina_Bool show_self; - Eina_Bool show_kthreads; - Eina_Bool show_user; - Eina_Bool show_desktop; - } settings; } Ui; Ui * @@ -84,7 +80,7 @@ void evisum_ui_shutdown(Ui *ui); void -evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent); +evisum_ui_main_menu_create(Ui *ui, Evas_Object *parent, Evas_Object *obj); void evisum_ui_activate(Ui *ui, Evisum_Action action, int pid); diff --git a/src/bin/ui/ui_cpu.c b/src/bin/ui/ui_cpu.c index c29586b..ec02eb7 100644 --- a/src/bin/ui/ui_cpu.c +++ b/src/bin/ui/ui_cpu.c @@ -695,7 +695,7 @@ _win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) } void -ui_win_cpu_add(Ui *ui) +ui_win_cpu_add(Ui *ui, Evas_Object *parent) { Evas_Object *win, *box, *scroller; Evas_Coord x = 0, y = 0; @@ -739,8 +739,8 @@ ui_win_cpu_add(Ui *ui) else evas_object_resize(win, UI_CHILD_WIN_WIDTH * 1.5, UI_CHILD_WIN_HEIGHT * 1.1); - if (ui->win) - evas_object_geometry_get(ui->win, &x, &y, NULL, NULL); + if (parent) + evas_object_geometry_get(parent, &x, &y, NULL, NULL); if (x > 0 && y > 0) evas_object_move(win, x + 20, y + 20); else diff --git a/src/bin/ui/ui_cpu.h b/src/bin/ui/ui_cpu.h index df1bb9c..b4f6ea6 100644 --- a/src/bin/ui/ui_cpu.h +++ b/src/bin/ui/ui_cpu.h @@ -5,6 +5,6 @@ #include "../system/machine.h" void -ui_win_cpu_add(Ui *ui); +ui_win_cpu_add(Ui *ui, Evas_Object *parent); #endif diff --git a/src/bin/ui/ui_disk.c b/src/bin/ui/ui_disk.c index 373db57..95357f2 100644 --- a/src/bin/ui/ui_disk.c +++ b/src/bin/ui/ui_disk.c @@ -13,15 +13,13 @@ typedef struct Evas_Object *btn_free; Evas_Object *genlist; Evisum_Ui_Cache *cache; - Ecore_Timer *timer; + Ecore_Thread *thread; int (*sort_cb)(const void *, const void *); Eina_Bool sort_reverse; Ui *ui; } Ui_Data; -static Eina_Lock _lock; - static void _item_unrealized_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) @@ -234,8 +232,18 @@ _item_disk_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info elm_panes_content_left_size_set(pd->panes, 0.5); } -static Eina_Bool -_disks_poll_timer_cb(void *data) +static void +_disks_poll(void *data, Ecore_Thread *thread) +{ + while (!ecore_thread_check(thread)) + { + ecore_thread_feedback(thread, file_system_info_all_get()); + usleep(1000000); + } +} + +static void +_disks_poll_feedback_cb(void *data, Ecore_Thread *thread, void *msgdata) { Elm_Object_Item *it; File_System *fs; @@ -243,10 +251,7 @@ _disks_poll_timer_cb(void *data) Eina_List *mounted; pd = data; - - eina_lock_take(&_lock); - - mounted = file_system_info_all_get(); + mounted = msgdata; if (pd->sort_cb) mounted = eina_list_sort(mounted, eina_list_count(mounted), pd->sort_cb); @@ -263,10 +268,14 @@ _disks_poll_timer_cb(void *data) elm_genlist_item_update(it); it = elm_genlist_item_next_get(it); } +} - eina_lock_release(&_lock); +static void +_disks_poll_update(Ui_Data *pd) +{ + Eina_List *mounted = file_system_info_all_get(); - return EINA_TRUE; + _disks_poll_feedback_cb(pd, NULL, mounted); } static void @@ -281,14 +290,12 @@ _win_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, evas_object_del(obj); - if (pd) - { - ecore_timer_del(pd->timer); - evisum_ui_item_cache_free(pd->cache); - free(pd); - } + ecore_thread_cancel(pd->thread); + ecore_thread_wait(pd->thread, 0.5); + + evisum_ui_item_cache_free(pd->cache); + free(pd); - eina_lock_free(&_lock); ui->disk.win = NULL; } @@ -399,7 +406,7 @@ _btn_device_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj, pd->sort_cb = _sort_by_device; _btn_icon_state_set(obj, pd->sort_reverse); - _disks_poll_timer_cb(pd); + _disks_poll_update(pd); } static void @@ -413,7 +420,7 @@ _btn_mount_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj, pd->sort_cb = _sort_by_mount; _btn_icon_state_set(obj, pd->sort_reverse); - _disks_poll_timer_cb(pd); + _disks_poll_update(pd); } static void @@ -427,7 +434,7 @@ _btn_fs_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj, pd->sort_cb = _sort_by_type; _btn_icon_state_set(obj, pd->sort_reverse); - _disks_poll_timer_cb(pd); + _disks_poll_update(pd); } static void @@ -441,7 +448,7 @@ _btn_used_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj, pd->sort_cb = _sort_by_used; _btn_icon_state_set(obj, pd->sort_reverse); - _disks_poll_timer_cb(pd); + _disks_poll_update(pd); } static void @@ -455,7 +462,7 @@ _btn_free_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj, pd->sort_cb = _sort_by_free; _btn_icon_state_set(obj, pd->sort_reverse); - _disks_poll_timer_cb(pd); + _disks_poll_update(pd); } static void @@ -469,7 +476,7 @@ _btn_total_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj, pd->sort_cb = _sort_by_total; _btn_icon_state_set(obj, pd->sort_reverse); - _disks_poll_timer_cb(pd); + _disks_poll_update(pd); } static void @@ -483,7 +490,7 @@ _btn_usage_clicked_cb(void *data EINA_UNUSED, Evas_Object *obj, pd->sort_cb = _sort_by_total; _btn_icon_state_set(obj, pd->sort_reverse); - _disks_poll_timer_cb(pd); + _disks_poll_update(pd); } static void @@ -491,12 +498,12 @@ _win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) { Ui_Data *pd = data; - _disks_poll_timer_cb(pd); + _disks_poll_update(pd); evisum_ui_config_save(pd->ui); } void -ui_win_disk_add(Ui *ui) +ui_win_disk_add(Ui *ui, Evas_Object *parent) { Evas_Object *win, *panes, *fr, *bx, *tbl, *scr; Evas_Object *genlist, *btn; @@ -509,8 +516,6 @@ ui_win_disk_add(Ui *ui) return; } - eina_lock_new(&_lock); - ui->disk.win = win = elm_win_util_standard_add("evisum", _("Storage")); elm_win_autodel_set(win, EINA_TRUE); evas_object_size_hint_weight_set(win, EXPAND, EXPAND); @@ -637,8 +642,8 @@ ui_win_disk_add(Ui *ui) else evas_object_resize(win, UI_CHILD_WIN_WIDTH * 1.5, UI_CHILD_WIN_HEIGHT * 1.1); - if (ui->win) - evas_object_geometry_get(ui->win, &x, &y, NULL, NULL); + if (parent) + evas_object_geometry_get(parent, &x, &y, NULL, NULL); if (x > 0 && y > 0) evas_object_move(win, x + 20, y + 20); else @@ -648,8 +653,8 @@ ui_win_disk_add(Ui *ui) evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _win_resize_cb, pd); evas_object_show(win); - pd->timer = ecore_timer_add(3.0, _disks_poll_timer_cb, pd); - - _disks_poll_timer_cb(pd); + pd->thread = ecore_thread_feedback_run(_disks_poll, + _disks_poll_feedback_cb, + NULL, NULL, pd, EINA_TRUE); } diff --git a/src/bin/ui/ui_disk.h b/src/bin/ui/ui_disk.h index b2c3665..8a33a45 100644 --- a/src/bin/ui/ui_disk.h +++ b/src/bin/ui/ui_disk.h @@ -4,6 +4,6 @@ #include "ui.h" void -ui_win_disk_add(Ui *ui); +ui_win_disk_add(Ui *ui, Evas_Object *parent); #endif diff --git a/src/bin/ui/ui_memory.c b/src/bin/ui/ui_memory.c index 1b901bf..02a4d73 100644 --- a/src/bin/ui/ui_memory.c +++ b/src/bin/ui/ui_memory.c @@ -36,7 +36,10 @@ static Eina_Bool starting = 1; #define COLOR_SHARED 225, 107, 62, 255 #define COLOR_NONE 0, 0, 0, 0 -static Eina_Lock _lock; +#if !defined(__OpenBSD__) +static +#endif +Eina_Lock _mlock; typedef struct { @@ -46,7 +49,10 @@ typedef struct int r, g, b, a; } Graph; -static Graph graphs[4]; +#if !defined(__OpenBSD__) +static +#endif +Graph graphs[4]; static Evas_Object * _label_mem(Evas_Object *parent, const char *text) @@ -305,7 +311,7 @@ _mem_usage_feedback_cb(void *data, Ecore_Thread *thread EINA_UNUSED, void *msgda evas_object_geometry_get(pd->bg, NULL, NULL, &w, &h); - eina_lock_take(&_lock); + eina_lock_take(&_mlock); _update_graph(&graphs[GR_USED], memory->used / ratio, pd, w, h); _update_graph(&graphs[GR_CACHED], memory->cached / ratio, pd, w, h); @@ -313,7 +319,7 @@ _mem_usage_feedback_cb(void *data, Ecore_Thread *thread EINA_UNUSED, void *msgda _update_graph(&graphs[GR_SHARED], memory->shared / ratio, pd, w, h); if (starting) starting = 0; - eina_lock_release(&_lock); + eina_lock_release(&_mlock); } static void @@ -354,7 +360,7 @@ _win_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj, evas_object_del(obj); ui->mem.win = NULL; free(pd); - eina_lock_free(&_lock); + eina_lock_free(&_mlock); } static void @@ -363,20 +369,20 @@ _win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) Ui_Data *pd = data; Ui *ui = pd->ui; - eina_lock_take(&_lock); + eina_lock_take(&_mlock); position_shrink_list((&graphs[GR_USED])->blocks); position_shrink_list((&graphs[GR_CACHED])->blocks); position_shrink_list((&graphs[GR_BUFFER])->blocks); position_shrink_list((&graphs[GR_SHARED])->blocks); - eina_lock_release(&_lock); + eina_lock_release(&_mlock); evisum_ui_config_save(ui); } void -ui_win_memory_add(Ui *ui) +ui_win_memory_add(Ui *ui, Evas_Object *parent) { Evas_Object *win, *lb, *bx, *tbl, *rec, *pb; Evas_Object *fr; @@ -394,7 +400,7 @@ ui_win_memory_add(Ui *ui) if (!pd) return; pd->ui = ui; - eina_lock_new(&_lock); + eina_lock_new(&_mlock); memset(&memory, 0, sizeof(memory)); system_memory_usage_get(&memory); @@ -489,7 +495,7 @@ ui_win_memory_add(Ui *ui) else evas_object_resize(win, UI_CHILD_WIN_WIDTH , UI_CHILD_WIN_HEIGHT); - if (ui->win) evas_object_geometry_get(ui->win, &x, &y, NULL, NULL); + if (parent) evas_object_geometry_get(parent, &x, &y, NULL, NULL); if (x > 0 && y > 0) evas_object_move(win, x + 20, y + 20); else diff --git a/src/bin/ui/ui_memory.h b/src/bin/ui/ui_memory.h index 0cbe90c..d5a7610 100644 --- a/src/bin/ui/ui_memory.h +++ b/src/bin/ui/ui_memory.h @@ -5,7 +5,7 @@ #include "../system/machine.h" void -ui_win_memory_add(Ui *ui); +ui_win_memory_add(Ui *ui, Evas_Object *parent); #endif diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c index b385d29..a084d35 100644 --- a/src/bin/ui/ui_process_list.c +++ b/src/bin/ui/ui_process_list.c @@ -10,11 +10,8 @@ #include #include -extern Evisum_Config *_evisum_config; extern int EVISUM_EVENT_CONFIG_CHANGED; -static Eina_Lock _lock; - typedef struct { Ecore_Thread *thread; @@ -514,7 +511,7 @@ _process_list_cancel_cb(void *data, Ecore_Thread *thread) static Eina_List * _process_list_sort(Ui *ui, Eina_List *list) { - switch (ui->settings.sort_type) + switch (ui->proc.sort_type) { case SORT_BY_NONE: case SORT_BY_PID: @@ -562,7 +559,7 @@ _process_list_sort(Ui *ui, Eina_List *list) break; } - if (ui->settings.sort_reverse) + if (ui->proc.sort_reverse) list = eina_list_reverse(list); return list; @@ -625,7 +622,7 @@ _process_list_search_trim(Eina_List *list, Ui_Data *pd) { if (*cpu_time) proc->cpu_usage = (double) (proc->cpu_time - *cpu_time) / - pd->ui->settings.poll_delay; + pd->ui->proc.poll_delay; *cpu_time = proc->cpu_time; } } @@ -644,7 +641,7 @@ _process_list_get(Ui_Data *pd) list = proc_info_all_get(); - if (ui->settings.show_user) + if (ui->proc.show_user) list = _process_list_uid_trim(list, getuid()); list = _process_list_search_trim(list, pd); @@ -689,7 +686,7 @@ _process_list(void *data, Ecore_Thread *thread) usleep(250000); } pd->ready = 1; - delay = ui->settings.poll_delay; + delay = ui->proc.poll_delay; } } @@ -705,8 +702,6 @@ _process_list_feedback_cb(void *data, Ecore_Thread *thread EINA_UNUSED, pd = data; list = msg; - eina_lock_take(&_lock); - _genlist_ensure_n_items(pd->genlist, eina_list_count(list)); it = elm_genlist_first_item_get(pd->genlist); @@ -728,15 +723,12 @@ _process_list_feedback_cb(void *data, Ecore_Thread *thread EINA_UNUSED, } elm_genlist_realized_items_update(pd->genlist); - - eina_lock_release(&_lock); } static void _process_list_update(Ui_Data *pd) { - Eina_List *list = _process_list_get(pd); - _process_list_feedback_cb(pd, NULL, list); + pd->skip_wait = 1; } static void @@ -773,7 +765,7 @@ _btn_clicked_state_save(Ui_Data *pd, Evas_Object *btn) { Ui *ui = pd->ui; - _btn_icon_state_update(btn, ui->settings.sort_reverse); + _btn_icon_state_update(btn, ui->proc.sort_reverse); evisum_ui_config_save(ui); @@ -789,9 +781,9 @@ _btn_pid_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, Ui_Data *pd = data; Ui *ui = pd->ui; - if (ui->settings.sort_type == SORT_BY_PID) - ui->settings.sort_reverse = !ui->settings.sort_reverse; - ui->settings.sort_type = SORT_BY_PID; + if (ui->proc.sort_type == SORT_BY_PID) + ui->proc.sort_reverse = !ui->proc.sort_reverse; + ui->proc.sort_type = SORT_BY_PID; _btn_clicked_state_save(pd, pd->btn_pid); } @@ -803,9 +795,9 @@ _btn_uid_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, Ui_Data *pd = data; Ui *ui = pd->ui; - if (ui->settings.sort_type == SORT_BY_UID) - ui->settings.sort_reverse = !ui->settings.sort_reverse; - ui->settings.sort_type = SORT_BY_UID; + if (ui->proc.sort_type == SORT_BY_UID) + ui->proc.sort_reverse = !ui->proc.sort_reverse; + ui->proc.sort_type = SORT_BY_UID; _btn_clicked_state_save(pd, pd->btn_uid); } @@ -817,9 +809,9 @@ _btn_cpu_usage_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, Ui_Data *pd = data; Ui *ui = pd->ui; - if (ui->settings.sort_type == SORT_BY_CPU_USAGE) - ui->settings.sort_reverse = !ui->settings.sort_reverse; - ui->settings.sort_type = SORT_BY_CPU_USAGE; + if (ui->proc.sort_type == SORT_BY_CPU_USAGE) + ui->proc.sort_reverse = !ui->proc.sort_reverse; + ui->proc.sort_type = SORT_BY_CPU_USAGE; _btn_clicked_state_save(pd, pd->btn_cpu_usage); } @@ -831,9 +823,9 @@ _btn_size_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, Ui_Data *pd = data; Ui *ui = pd->ui; - if (ui->settings.sort_type == SORT_BY_SIZE) - ui->settings.sort_reverse = !ui->settings.sort_reverse; - ui->settings.sort_type = SORT_BY_SIZE; + if (ui->proc.sort_type == SORT_BY_SIZE) + ui->proc.sort_reverse = !ui->proc.sort_reverse; + ui->proc.sort_type = SORT_BY_SIZE; _btn_clicked_state_save(pd, pd->btn_size); } @@ -845,9 +837,9 @@ _btn_rss_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, Ui_Data *pd = data; Ui *ui = pd->ui; - if (ui->settings.sort_type == SORT_BY_RSS) - ui->settings.sort_reverse = !ui->settings.sort_reverse; - ui->settings.sort_type = SORT_BY_RSS; + if (ui->proc.sort_type == SORT_BY_RSS) + ui->proc.sort_reverse = !ui->proc.sort_reverse; + ui->proc.sort_type = SORT_BY_RSS; _btn_clicked_state_save(pd, pd->btn_rss); } @@ -859,9 +851,9 @@ _btn_cmd_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, Ui_Data *pd = data; Ui *ui = pd->ui; - if (ui->settings.sort_type == SORT_BY_CMD) - ui->settings.sort_reverse = !ui->settings.sort_reverse; - ui->settings.sort_type = SORT_BY_CMD; + if (ui->proc.sort_type == SORT_BY_CMD) + ui->proc.sort_reverse = !ui->proc.sort_reverse; + ui->proc.sort_type = SORT_BY_CMD; _btn_clicked_state_save(pd, pd->btn_cmd); } @@ -873,9 +865,9 @@ _btn_state_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, Ui_Data *pd = data; Ui *ui = pd->ui; - if (ui->settings.sort_type == SORT_BY_STATE) - ui->settings.sort_reverse = !ui->settings.sort_reverse; - ui->settings.sort_type = SORT_BY_STATE; + if (ui->proc.sort_type == SORT_BY_STATE) + ui->proc.sort_reverse = !ui->proc.sort_reverse; + ui->proc.sort_type = SORT_BY_STATE; _btn_clicked_state_save(pd, pd->btn_state); } @@ -977,7 +969,7 @@ _item_menu_properties_cb(void *data, Evas_Object *obj EINA_UNUSED, _item_menu_cancel_cb(pd, NULL, NULL); - _process_win_add(pd->win, pd->selected_pid, ui->settings.poll_delay); + _process_win_add(pd->win, pd->selected_pid, ui->proc.poll_delay); } static Evas_Object * @@ -1075,7 +1067,7 @@ _item_pid_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) pd->selected_pid = proc->pid; ui_process_win_add(pd->win, proc->pid, proc->command, - ui->settings.poll_delay); + ui->proc.poll_delay); } static void @@ -1084,10 +1076,10 @@ _main_menu_dismissed_cb(void *data, Evas_Object *obj EINA_UNUSED, { Ui *ui = data; - elm_ctxpopup_dismiss(ui->main_menu); - evas_object_del(ui->main_menu); + elm_ctxpopup_dismiss(ui->menu); + evas_object_del(ui->menu); - ui->main_menu = NULL; + ui->menu = NULL; } static Evas_Object * @@ -1119,8 +1111,8 @@ _btn_menu_clicked_cb(void *data, Evas_Object *obj, { Ui *ui = data; - if (!ui->main_menu) - evisum_ui_main_menu_create(ui, obj); + if (!ui->menu) + evisum_ui_main_menu_create(ui, ui->proc.win, obj); else _main_menu_dismissed_cb(ui, NULL, NULL); } @@ -1171,9 +1163,9 @@ _ui_content_system_add(Ui_Data *pd, Evas_Object *parent) pd->btn_cmd = btn = elm_button_add(parent); _btn_icon_state_init(btn, - (ui->settings.sort_type == SORT_BY_CMD ? - ui->settings.sort_reverse : EINA_FALSE), - ui->settings.sort_type == SORT_BY_CMD); + (ui->proc.sort_type == SORT_BY_CMD ? + ui->proc.sort_reverse : EINA_FALSE), + ui->proc.sort_type == SORT_BY_CMD); evas_object_size_hint_weight_set(btn, 1.0, 0); evas_object_size_hint_align_set(btn, FILL, FILL); elm_object_text_set(btn, _("Command")); @@ -1184,9 +1176,9 @@ _ui_content_system_add(Ui_Data *pd, Evas_Object *parent) pd->btn_uid = btn = elm_button_add(parent); _btn_icon_state_init(btn, - (ui->settings.sort_type == SORT_BY_UID ? - ui->settings.sort_reverse : EINA_FALSE), - ui->settings.sort_type == SORT_BY_UID); + (ui->proc.sort_type == SORT_BY_UID ? + ui->proc.sort_reverse : EINA_FALSE), + ui->proc.sort_type == SORT_BY_UID); evas_object_size_hint_weight_set(btn, 1.0, 0); evas_object_size_hint_align_set(btn, FILL, FILL); elm_object_text_set(btn, _("User")); @@ -1197,9 +1189,9 @@ _ui_content_system_add(Ui_Data *pd, Evas_Object *parent) pd->btn_pid = btn = elm_button_add(parent); _btn_icon_state_init(btn, - (ui->settings.sort_type == SORT_BY_PID ? - ui->settings.sort_reverse : EINA_FALSE), - ui->settings.sort_type == SORT_BY_PID); + (ui->proc.sort_type == SORT_BY_PID ? + ui->proc.sort_reverse : EINA_FALSE), + ui->proc.sort_type == SORT_BY_PID); evas_object_size_hint_weight_set(btn, 1.0, 0); evas_object_size_hint_align_set(btn, FILL, FILL); elm_object_text_set(btn, _("PID")); @@ -1210,9 +1202,9 @@ _ui_content_system_add(Ui_Data *pd, Evas_Object *parent) pd->btn_size = btn = elm_button_add(parent); _btn_icon_state_init(btn, - (ui->settings.sort_type == SORT_BY_SIZE ? - ui->settings.sort_reverse : EINA_FALSE), - ui->settings.sort_type == SORT_BY_SIZE); + (ui->proc.sort_type == SORT_BY_SIZE ? + ui->proc.sort_reverse : EINA_FALSE), + ui->proc.sort_type == SORT_BY_SIZE); evas_object_size_hint_weight_set(btn, 1.0, 0); evas_object_size_hint_align_set(btn, FILL, FILL); elm_object_text_set(btn, _("Size")); @@ -1223,9 +1215,9 @@ _ui_content_system_add(Ui_Data *pd, Evas_Object *parent) pd->btn_rss = btn = elm_button_add(parent); _btn_icon_state_init(btn, - (ui->settings.sort_type == SORT_BY_RSS ? - ui->settings.sort_reverse : EINA_FALSE), - ui->settings.sort_type == SORT_BY_RSS); + (ui->proc.sort_type == SORT_BY_RSS ? + ui->proc.sort_reverse : EINA_FALSE), + ui->proc.sort_type == SORT_BY_RSS); evas_object_size_hint_weight_set(btn, 1.0, 0); evas_object_size_hint_align_set(btn, FILL, FILL); elm_object_text_set(btn, _("Res")); @@ -1236,9 +1228,9 @@ _ui_content_system_add(Ui_Data *pd, Evas_Object *parent) pd->btn_state = btn = elm_button_add(parent); _btn_icon_state_init(btn, - (ui->settings.sort_type == SORT_BY_STATE ? - ui->settings.sort_reverse : EINA_FALSE), - ui->settings.sort_type == SORT_BY_STATE); + (ui->proc.sort_type == SORT_BY_STATE ? + ui->proc.sort_reverse : EINA_FALSE), + ui->proc.sort_type == SORT_BY_STATE); evas_object_size_hint_weight_set(btn, 0, 0); evas_object_size_hint_align_set(btn, FILL, FILL); elm_object_text_set(btn, _("State")); @@ -1249,9 +1241,9 @@ _ui_content_system_add(Ui_Data *pd, Evas_Object *parent) pd->btn_cpu_usage = btn = elm_button_add(parent); _btn_icon_state_init(btn, - (ui->settings.sort_type == SORT_BY_CPU_USAGE ? - ui->settings.sort_reverse : EINA_FALSE), - ui->settings.sort_type == SORT_BY_CPU_USAGE); + (ui->proc.sort_type == SORT_BY_CPU_USAGE ? + ui->proc.sort_reverse : EINA_FALSE), + ui->proc.sort_type == SORT_BY_CPU_USAGE); evas_object_size_hint_weight_set(btn, EXPAND, 0); evas_object_size_hint_align_set(btn, FILL, FILL); elm_object_text_set(btn, _("CPU %")); @@ -1364,18 +1356,13 @@ _win_key_down_search(Ui_Data *pd, Evas_Event_Key_Down *ev) if (!strcmp(ev->keyname, "Escape")) { - if (!pd->entry_visible) - ecore_main_loop_quit(); - else - { - elm_object_text_set(entry, ""); - pd->skip_wait = 0; - evas_object_lower(pd->entry_pop); - pd->search_len = 0; - for (int i = 0; i < sizeof(pd->search); i++) - pd->search[i] = '\0'; - pd->entry_visible = 0; - } + elm_object_text_set(entry, ""); + pd->skip_wait = 0; + evas_object_lower(pd->entry_pop); + pd->search_len = 0; + for (int i = 0; i < sizeof(pd->search); i++) + pd->search[i] = '\0'; + pd->entry_visible = 0; } else if (!strcmp(ev->keyname, "BackSpace")) { @@ -1429,14 +1416,10 @@ _win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) Ui_Data *pd = data; Ui *ui = pd->ui; - if (eina_lock_take_try(&_lock)) - { - elm_genlist_realized_items_update(pd->genlist); - eina_lock_release(&_lock); - } + elm_genlist_realized_items_update(pd->genlist); evas_object_lower(pd->entry_pop); - if (ui->main_menu) + if (ui->menu) _main_menu_dismissed_cb(ui, NULL, NULL); evisum_ui_config_save(ui); @@ -1496,32 +1479,28 @@ _win_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_U ecore_event_handler_del(pd->handler[1]); pd->thread = NULL; - ui->win = NULL; + ui->proc.win = NULL; if (pd->cache) evisum_ui_item_cache_free(pd->cache); eina_hash_free(pd->cpu_times); - eina_lock_free(&_lock); - free(pd); } void -ui_process_list_win_add(Ui *ui) +ui_process_list_win_add(Ui *ui, Evas_Object *parent EINA_UNUSED) { Evas_Object *win, *icon; Evas_Object *obj; - if (ui->win) + if (ui->proc.win) { - elm_win_raise(ui->win); + elm_win_raise(ui->proc.win); return; } - eina_lock_new(&_lock); - Ui_Data *pd = _pd = calloc(1, sizeof(Ui_Data)); if (!pd) return; @@ -1532,7 +1511,7 @@ ui_process_list_win_add(Ui *ui) pd->handler[1] = ecore_event_handler_add(EVISUM_EVENT_CONFIG_CHANGED, _evisum_config_changed_cb, pd); - ui->win = pd->win = win = elm_win_util_standard_add("evisum", "evisum"); + ui->proc.win = pd->win = win = elm_win_util_standard_add("evisum", "evisum"); elm_win_autodel_set(win, EINA_TRUE); elm_win_title_set(win, _("EFL System Monitor")); icon = elm_icon_add(win); @@ -1540,8 +1519,8 @@ ui_process_list_win_add(Ui *ui) elm_win_icon_object_set(win, icon); evisum_ui_background_add(win, evisum_ui_backgrounds_enabled_get()); - if (_evisum_config->width > 1 && _evisum_config->height > 1) - evas_object_resize(win, _evisum_config->width, _evisum_config->height); + if (ui->proc.width > 1 && ui->proc.height > 1) + evas_object_resize(win, ui->proc.width, ui->proc.height); else evas_object_resize(win, EVISUM_WIN_WIDTH * elm_config_scale_get(), EVISUM_WIN_HEIGHT * elm_config_scale_get()); diff --git a/src/bin/ui/ui_process_list.h b/src/bin/ui/ui_process_list.h index 8b54f6d..67c4df3 100644 --- a/src/bin/ui/ui_process_list.h +++ b/src/bin/ui/ui_process_list.h @@ -20,6 +20,6 @@ typedef enum } Sort_Type; void -ui_process_list_win_add(Ui *ui); +ui_process_list_win_add(Ui *ui, Evas_Object *parent); #endif diff --git a/src/bin/ui/ui_sensors.c b/src/bin/ui/ui_sensors.c index edd36aa..f2d1a3c 100644 --- a/src/bin/ui/ui_sensors.c +++ b/src/bin/ui/ui_sensors.c @@ -1,8 +1,6 @@ #include "ui_sensors.h" #include "system/machine.h" -static Eina_Lock _lock; - typedef struct { Eina_List *sensors; @@ -82,6 +80,8 @@ _sensors_update(void *data, Ecore_Thread *thread) while (!ecore_thread_check(thread)) { + system_power_state_get(&msg->power); + if (pd->sensor) { if (!system_sensor_thermal_get(pd->sensor)) @@ -93,13 +93,7 @@ _sensors_update(void *data, Ecore_Thread *thread) } } - system_power_state_get(&msg->power); - - if (eina_lock_take_try(&_lock)) - { - ecore_thread_feedback(thread, msg); - eina_lock_release(&_lock); - } + ecore_thread_feedback(thread, msg); if (ecore_thread_check(thread)) break; @@ -152,7 +146,6 @@ _sensors_update_feedback_cb(void *data, Ecore_Thread *thread, void *msgdata) l = eina_list_next(l); i++; } - system_power_state_free(&msg->power); } @@ -216,8 +209,6 @@ _win_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, Ui_Data *pd = data; Ui *ui = pd->ui; - eina_lock_take(&_lock); - ecore_thread_cancel(ui->sensors.thread); ecore_thread_wait(ui->sensors.thread, 0.5); ui->sensors.thread = NULL; @@ -230,9 +221,6 @@ _win_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, elm_genlist_item_class_free(pd->itc); free(pd); - - eina_lock_release(&_lock); - eina_lock_free(&_lock); } static void @@ -244,7 +232,7 @@ _win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) } void -ui_win_sensors_add(Ui *ui) +ui_win_sensors_add(Ui *ui, Evas_Object *parent) { Evas_Object *win, *content, *bx, *tbl, *fr; Evas_Object *genlist, *pb, *pad; @@ -263,8 +251,6 @@ ui_win_sensors_add(Ui *ui) if (!pd) return; pd->ui = ui; - eina_lock_new(&_lock); - ui->sensors.win = win = elm_win_util_standard_add("evisum", _("Sensors")); elm_win_autodel_set(win, EINA_TRUE); evas_object_size_hint_weight_set(win, EXPAND, EXPAND); @@ -374,8 +360,8 @@ ui_win_sensors_add(Ui *ui) else evas_object_resize(win, UI_CHILD_WIN_WIDTH, UI_CHILD_WIN_HEIGHT); - if (ui->win) - evas_object_geometry_get(ui->win, &x, &y, NULL, NULL); + if (parent) + evas_object_geometry_get(parent, &x, &y, NULL, NULL); if (x > 0 && y > 0) evas_object_move(win, x + 20, y + 20); else diff --git a/src/bin/ui/ui_sensors.h b/src/bin/ui/ui_sensors.h index de5634e..d70f2b1 100644 --- a/src/bin/ui/ui_sensors.h +++ b/src/bin/ui/ui_sensors.h @@ -5,6 +5,6 @@ #include "../system/machine.h" void -ui_win_sensors_add(Ui *ui); +ui_win_sensors_add(Ui *ui, Evas_Object *parent); #endif diff --git a/src/bin/ui/ui_util.c b/src/bin/ui/ui_util.c index a8116a3..4c19560 100644 --- a/src/bin/ui/ui_util.c +++ b/src/bin/ui/ui_util.c @@ -5,8 +5,11 @@ #define ARRAY_SIZE(n) sizeof(n) / sizeof(n[0]) -static Eina_Bool _backgrounds_enabled = EINA_FALSE; -static Eina_Hash *_icon_cache = NULL; +Eina_Bool _backgrounds_enabled = EINA_FALSE; +#if !defined(__OpenBSD__) +static +#endif +Eina_Hash *_icon_cache; Evas_Object * evisum_ui_tab_add(Evas_Object *parent, Evas_Object **alias, const char *text, @@ -160,6 +163,7 @@ _icon_cache_free_cb(void *data) void evisum_icon_cache_init(void) { + _icon_cache = NULL; _icon_cache = eina_hash_string_superfast_new(_icon_cache_free_cb); } @@ -270,21 +274,6 @@ evisum_ui_textblock_font_size_get(Evas_Object *tb) return size; } -void -evisum_child_window_show(Evas_Object *parent, Evas_Object *win) -{ - Evas_Coord x, y, w, h; - - evas_object_resize(win, UI_CHILD_WIN_WIDTH, UI_CHILD_WIN_HEIGHT); - evas_object_geometry_get(parent, &x, &y, &w, &h); - if (x > 0 && y > 0) - evas_object_move(win, x + 20, y + 10); - else - elm_win_center(win, EINA_TRUE, EINA_TRUE); - - evas_object_show(win); -} - typedef struct { Ui *ui; Evas_Object *lb; @@ -424,7 +413,7 @@ evisum_about_window_show(void *data) if (ui->win_about) return; - ui->win_about = win = elm_win_add(ui->win, "evisum", ELM_WIN_DIALOG_BASIC); + ui->win_about = win = elm_win_add(ui->menu_parent, "evisum", ELM_WIN_DIALOG_BASIC); elm_win_autodel_set(win, EINA_TRUE); elm_win_title_set(win, _("About")); diff --git a/src/bin/ui/ui_util.h b/src/bin/ui/ui_util.h index 8211de4..cd983b7 100644 --- a/src/bin/ui/ui_util.h +++ b/src/bin/ui/ui_util.h @@ -61,9 +61,6 @@ evisum_ui_textblock_font_size_get(Evas_Object *tb); void evisum_ui_textblock_font_size_set(Evas_Object *tb, int new_size); -void -evisum_child_window_show(Evas_Object *parent, Evas_Object *win); - void evisum_about_window_show(void *data);