evisum: Clean up orderly.

Whether this is meritted, I don't know. It might be useful in
the future.
This commit is contained in:
Alastair Poole 2020-06-30 13:05:35 +01:00
parent 1f0d8827b8
commit d2a72510cb
8 changed files with 53 additions and 50 deletions

View File

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

View File

@ -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"),

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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