netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=d2a72510cb79a83f1b03aa1bfad57f2fe6e1abbb

commit d2a72510cb79a83f1b03aa1bfad57f2fe6e1abbb
Author: Alastair Poole <nets...@gmail.com>
Date:   Tue Jun 30 13:05:35 2020 +0100

    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;
-
-   ui->cpu_visible = EINA_TRUE;
+   if (ui->win_cpu) return;
 
-   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);

-- 


Reply via email to