From d2a72510cb79a83f1b03aa1bfad57f2fe6e1abbb Mon Sep 17 00:00:00 2001 From: Alastair Poole Date: Tue, 30 Jun 2020 13:05:35 +0100 Subject: [PATCH] evisum: Clean up orderly. Whether this is meritted, I don't know. It might be useful in the future. --- src/bin/main.c | 6 ++++-- src/bin/ui/ui.c | 35 +++++++++++++++++++++++------------ src/bin/ui/ui.h | 15 +++++++++------ src/bin/ui/ui_cpu.c | 17 +++++------------ src/bin/ui/ui_disk.c | 7 +++---- src/bin/ui/ui_memory.c | 8 +++----- src/bin/ui/ui_misc.c | 7 +++---- src/bin/ui/ui_util.c | 8 +++----- 8 files changed, 53 insertions(+), 50 deletions(-) diff --git a/src/bin/main.c b/src/bin/main.c index 83278ce..6ef07e6 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -21,7 +21,9 @@ static void _win_del_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - exit(0); + Ui *ui = data; + + evisum_ui_shutdown(ui); } static Ui * @@ -131,7 +133,7 @@ main(int argc, char **argv) if (ui) { ecore_main_loop_begin(); - evisum_ui_shutdown(ui); + evisum_ui_del(ui); } elm_shutdown(); diff --git a/src/bin/ui/ui.c b/src/bin/ui/ui.c index 3d8993d..f503767 100644 --- a/src/bin/ui/ui.c +++ b/src/bin/ui/ui.c @@ -743,9 +743,12 @@ _btn_state_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, static void _quit_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) + void *event_info EINA_UNUSED) { - exit(0); + Ui *ui = data; + + evas_object_hide(ui->win); + evisum_ui_shutdown(ui); } static void @@ -1278,6 +1281,23 @@ _evisum_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) void evisum_ui_shutdown(Ui *ui) +{ + if (ui->win_cpu) + evas_object_smart_callback_call(ui->win_cpu, "delete,request", NULL); + if (ui->win_mem) + evas_object_smart_callback_call(ui->win_mem, "delete,request", NULL); + if (ui->win_disk) + evas_object_smart_callback_call(ui->win_disk, "delete,request", NULL); + if (ui->win_misc) + evas_object_smart_callback_call(ui->win_misc, "delete,request", NULL); + if (ui->win_about) + evas_object_smart_callback_call(ui->win_about, "delete,request", NULL); + + ecore_main_loop_quit(); +} + +void +evisum_ui_del(Ui *ui) { evas_object_del(ui->win); @@ -1287,9 +1307,6 @@ evisum_ui_shutdown(Ui *ui) if (ui->thread_system) ecore_thread_cancel(ui->thread_system); - if (ui->thread_cpu) - ecore_thread_cancel(ui->thread_cpu); - if (ui->thread_process) ecore_thread_cancel(ui->thread_process); @@ -1299,14 +1316,8 @@ evisum_ui_shutdown(Ui *ui) if (ui->thread_process) ecore_thread_wait(ui->thread_process, 1.0); - if (ui->thread_cpu) - ecore_thread_wait(ui->thread_cpu, 1.0); - _proc_pid_cpu_times_free(ui); - if (ui->cpu_list) - eina_list_free(ui->cpu_list); - if (ui->cache) evisum_ui_item_cache_free(ui->cache); @@ -1426,7 +1437,7 @@ _menu_setup(Ui *ui) menu = elm_win_main_menu_get(ui->win); menu_it = elm_menu_item_add(menu, NULL, NULL, _("File"), NULL, NULL); - elm_menu_item_add(menu, menu_it, "exit", _("Quit"), _quit_cb, NULL); + elm_menu_item_add(menu, menu_it, "exit", _("Quit"), _quit_cb, ui); menu_it = elm_menu_item_add(menu, NULL, NULL, _("View"), NULL, NULL); elm_menu_item_add(menu, menu_it, NULL, _("CPU"), _menu_cpu_activity_clicked_cb, ui); elm_menu_item_add(menu, menu_it, NULL, _("Memory"), diff --git a/src/bin/ui/ui.h b/src/bin/ui/ui.h index 3cea3a3..8964dc5 100644 --- a/src/bin/ui/ui.h +++ b/src/bin/ui/ui.h @@ -37,16 +37,16 @@ typedef struct Ui Evas_Object *scroller; Evas_Object *content; + Evas_Object *win_cpu; + Evas_Object *win_mem; + Evas_Object *win_disk; + Evas_Object *win_misc; + Evas_Object *win_about; + Evas_Object *disk_activity; Evas_Object *misc_activity; Evas_Object *system_activity; - Eina_Bool cpu_visible; - Eina_Bool misc_visible; - Eina_Bool disk_visible; - Eina_Bool mem_visible; - Eina_Bool about_visible; - Evas_Object *progress_cpu; Evas_Object *progress_mem; @@ -98,6 +98,9 @@ typedef struct Ui Ui * evisum_ui_add(Evas_Object *win); +void +evisum_ui_del(Ui *ui); + void evisum_ui_shutdown(Ui *ui); diff --git a/src/bin/ui/ui_cpu.c b/src/bin/ui/ui_cpu.c index f9c6871..01adbad 100644 --- a/src/bin/ui/ui_cpu.c +++ b/src/bin/ui/ui_cpu.c @@ -163,12 +163,6 @@ _core_times_cb(void *data, Ecore_Thread *thread) for (int i = 0; !ecore_thread_check(thread); i = 0) { - if (!ui->cpu_visible) - { - usleep(1000000); - continue; - } - cores = system_cpu_usage_get(&ncpu); EINA_LIST_FOREACH(ui->cpu_list, l, progress) @@ -190,8 +184,8 @@ _win_del_cb(void *data, Evas_Object *obj, Progress *progress; Ui *ui = data; + evas_object_hide(obj); ecore_thread_cancel(ui->thread_cpu); - evas_object_del(obj); EINA_LIST_FREE(ui->cpu_list, progress) { @@ -201,7 +195,8 @@ _win_del_cb(void *data, Evas_Object *obj, } ecore_thread_wait(ui->thread_cpu, 1.0); - ui->cpu_visible = EINA_FALSE; + evas_object_del(obj); + ui->win_cpu = NULL; } void @@ -212,11 +207,9 @@ ui_win_cpu_add(Ui *ui) Evas_Object *bg, *line, *obj; int cpu_count; - if (ui->cpu_visible) return; + if (ui->win_cpu) return; - ui->cpu_visible = EINA_TRUE; - - win = elm_win_util_standard_add("evisum", _("CPU Usage")); + ui->win_cpu = win = elm_win_util_standard_add("evisum", _("CPU Usage")); evas_object_size_hint_weight_set(win, EXPAND, EXPAND); evas_object_size_hint_align_set(win, FILL, FILL); diff --git a/src/bin/ui/ui_disk.c b/src/bin/ui/ui_disk.c index de6700f..0acb787 100644 --- a/src/bin/ui/ui_disk.c +++ b/src/bin/ui/ui_disk.c @@ -161,8 +161,8 @@ _win_del_cb(void *data, Evas_Object *obj EINA_UNUSED, ecore_timer_del(ui->timer_disk); ui->timer_disk = NULL; - ui->disk_visible = EINA_FALSE; evas_object_del(obj); + ui->win_disk = NULL; } void @@ -171,10 +171,9 @@ ui_win_disk_add(Ui *ui) Evas_Object *win, *box, *vbox, *scroller; Evas_Object *table, *rect; - if (ui->disk_visible) return; - ui->disk_visible = EINA_TRUE; + if (ui->win_disk) return; - win = elm_win_util_standard_add("evisum", _("Storage")); + ui->win_disk = win = elm_win_util_standard_add("evisum", _("Storage")); evas_object_size_hint_weight_set(win, EXPAND, EXPAND); evas_object_size_hint_align_set(win, FILL, FILL); diff --git a/src/bin/ui/ui_memory.c b/src/bin/ui/ui_memory.c index 4816e41..49c613f 100644 --- a/src/bin/ui/ui_memory.c +++ b/src/bin/ui/ui_memory.c @@ -116,7 +116,7 @@ _win_del_cb(void *data, Evas_Object *obj, if (widgets) free(widgets); evas_object_del(obj); - ui->mem_visible = EINA_FALSE; + ui->win_mem = NULL; } void @@ -125,14 +125,12 @@ ui_win_memory_add(Ui *ui) Evas_Object *win, *frame, *pb; Evas_Object *border, *rect, *label, *table; - if (ui->mem_visible) return; - - ui->mem_visible = EINA_TRUE; + if (ui->win_mem) return; Widgets *widgets = calloc(1, sizeof(Widgets)); if (!widgets) return; - win = elm_win_util_standard_add("evisum", _("Memory Usage")); + ui->win_mem = win = elm_win_util_standard_add("evisum", _("Memory Usage")); evas_object_size_hint_weight_set(win, EXPAND, EXPAND); evas_object_size_hint_align_set(win, FILL, FILL); diff --git a/src/bin/ui/ui_misc.c b/src/bin/ui/ui_misc.c index bfd6212..4f3aa89 100644 --- a/src/bin/ui/ui_misc.c +++ b/src/bin/ui/ui_misc.c @@ -335,7 +335,7 @@ _win_del_cb(void *data, Evas_Object *obj EINA_UNUSED, ui->timer_misc = NULL; evas_object_del(obj); - ui->misc_visible = EINA_FALSE; + ui->win_misc = NULL; } void @@ -344,10 +344,9 @@ ui_win_misc_add(Ui *ui) Evas_Object *win, *box, *hbox, *frame, *scroller; Evas_Object *table, *border, *rect; - if (ui->misc_visible) return; - ui->misc_visible = EINA_TRUE; + if (ui->win_misc) return; - win = elm_win_util_standard_add("evisum", _("Stuff")); + ui->win_misc = win = elm_win_util_standard_add("evisum", _("Stuff")); evas_object_size_hint_weight_set(win, EXPAND, EXPAND); evas_object_size_hint_align_set(win, FILL, FILL); diff --git a/src/bin/ui/ui_util.c b/src/bin/ui/ui_util.c index 9522f47..ece0ba0 100644 --- a/src/bin/ui/ui_util.c +++ b/src/bin/ui/ui_util.c @@ -231,8 +231,8 @@ _win_del_cb(void *data, Evas_Object *obj, _animator = NULL; ui = evas_object_data_get(win, "ui"); if (!ui) return; - ui->about_visible = EINA_FALSE; evas_object_del(win); + ui->win_about = NULL; } static Eina_Bool @@ -282,11 +282,9 @@ evisum_about_window_show(void *data) ui = data; - if (ui->about_visible) return; + if (ui->win_about) return; - ui->about_visible = EINA_TRUE; - - win = elm_win_add(ui->win, "evisum", ELM_WIN_DIALOG_BASIC); + ui->win_about = win = elm_win_add(ui->win, "evisum", ELM_WIN_DIALOG_BASIC); elm_win_title_set(win, "About Evisum"); evas_object_smart_callback_add(win, "delete,request", _win_del_cb, win); evas_object_data_set(win, "ui", ui);