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