netstar pushed a commit to branch master.

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

commit a6694b4c9ac4bd98175a7c7b14c44f6fd9d0198d
Author: Alastair Poole <nets...@gmail.com>
Date:   Wed Mar 31 15:05:07 2021 +0100

    bg_poll: use existing api...
---
 src/bin/main.c                   | 35 +++++++++++------------------------
 src/bin/system/machine.c         |  1 +
 src/bin/system/machine/cpu.bogox |  4 ++--
 src/bin/ui/evisum_ui.c           |  3 +++
 src/bin/ui/evisum_ui.h           |  1 +
 src/bin/ui/ui_process_list.c     |  5 +----
 6 files changed, 19 insertions(+), 30 deletions(-)

diff --git a/src/bin/main.c b/src/bin/main.c
index d808592..3608add 100644
--- a/src/bin/main.c
+++ b/src/bin/main.c
@@ -34,44 +34,31 @@ _signals(Evisum_Ui *ui)
 static void
 _background_poller_cb(void *data, Ecore_Thread *thread)
 {
+   meminfo_t memory;
    Evisum_Ui *ui = data;
-   double max = system_cpu_online_count_get() * 100.0;
+
+   system_memory_usage_get(&memory);
+   ui->mem_total = memory.total;
 
    while (!ecore_thread_check(thread))
      {
-        meminfo_t memory;
-        static uint64_t cpu_time_prev = 0;
-        uint64_t cpu_time = 0;
-        int n_cpu;
-
-        cpu_core_t **cores = system_cpu_state_get(&n_cpu);
-        for (int i = 0; i < n_cpu; i++)
+        int ncpu;
+        double percent = 0.0;
+        cpu_core_t **cores = system_cpu_usage_delayed_get(&ncpu, 250000);
+        for (int i = 0; i < ncpu; i++)
           {
-             cpu_time += cores[i]->total - cores[i]->idle;
+             percent += cores[i]->percent;
              free(cores[i]);
           }
         free(cores);
 
         memset(&memory, 0, sizeof(meminfo_t));
         system_memory_usage_get(&memory);
-        ui->mem_total = memory.total;
         ui->mem_used = memory.used;
         if (file_system_in_use("ZFS"))
           ui->mem_used += memory.zfs_arc_used;
 
-        for (int i = 0; i < 16; i++)
-          {
-             if (ecore_thread_check(thread))
-               break;
-             usleep(62500);
-          }
-
-       if (cpu_time_prev)
-         {
-            ui->cpu_usage = (double) (cpu_time - cpu_time_prev);
-            if (ui->cpu_usage > max) ui->cpu_usage = max;
-         }
-       cpu_time_prev = cpu_time;
+        ui->cpu_usage = percent / ncpu;
      }
 }
 
@@ -154,7 +141,7 @@ elm_main(int argc, char **argv)
    evisum_server_init(ui);
    evisum_ui_activate(ui, action, pid);
 
-   ecore_thread_run(_background_poller_cb, NULL, NULL, ui);
+   ui->background_poll_thread = ecore_thread_run(_background_poller_cb, NULL, 
NULL, ui);
 
    ecore_main_loop_begin();
 
diff --git a/src/bin/system/machine.c b/src/bin/system/machine.c
index 866d21c..6db8349 100644
--- a/src/bin/system/machine.c
+++ b/src/bin/system/machine.c
@@ -60,6 +60,7 @@
 # include <net/if_mib.h>
 # include <vm/vm_param.h>
 # include <dev/acpica/acpiio.h>
+# include <sys/resource.h>
 #endif
 
 #include "macros.h"
diff --git a/src/bin/system/machine/cpu.bogox b/src/bin/system/machine/cpu.bogox
index eff7440..8478168 100644
--- a/src/bin/system/machine/cpu.bogox
+++ b/src/bin/system/machine/cpu.bogox
@@ -111,10 +111,10 @@ _cpu_state_get(cpu_core_t **cores, int ncpu)
         unsigned long *cpu = cpu_times[i];
 
         total = 0;
-        for (j = 0; j < CPU_STATES; j++)
+        for (j = CP_USER; j <= CP_IDLE; j++)
           total += cpu[j];
 
-        idle = cpu[4];
+        idle = cpu[CP_IDLE];
 
         diff_total = total - core->total;
         diff_idle = idle - core->idle;
diff --git a/src/bin/ui/evisum_ui.c b/src/bin/ui/evisum_ui.c
index 63047f4..2eae800 100644
--- a/src/bin/ui/evisum_ui.c
+++ b/src/bin/ui/evisum_ui.c
@@ -744,6 +744,9 @@ evisum_ui_shutdown(Evisum_Ui *ui)
    evisum_icon_cache_shutdown();
    evisum_ui_config_save(ui);
 
+   ecore_thread_cancel(ui->background_poll_thread);
+   ecore_thread_wait(ui->background_poll_thread, 0.5);
+
    free(ui);
 }
 
diff --git a/src/bin/ui/evisum_ui.h b/src/bin/ui/evisum_ui.h
index 938d756..f763725 100644
--- a/src/bin/ui/evisum_ui.h
+++ b/src/bin/ui/evisum_ui.h
@@ -20,6 +20,7 @@ typedef struct _Evisum_Ui
 {
    pid_t                program_pid;
    Ecore_Event_Handler *handler_sig;
+   Ecore_Thread        *background_poll_thread;
 
    Eina_Bool            effects;
 
diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c
index 1f114fb..cd2d3b8 100644
--- a/src/bin/ui/ui_process_list.c
+++ b/src/bin/ui/ui_process_list.c
@@ -910,7 +910,6 @@ _summary_update(Win_Data *wd)
 {
    Evisum_Ui *ui;
    Eina_Strbuf *buf;
-   unsigned int online = system_cpu_online_count_get();
 
    buf = eina_strbuf_new();
 
@@ -936,9 +935,7 @@ _summary_update(Win_Data *wd)
 
    elm_object_text_set(wd->summary.lb, eina_strbuf_string_get(buf));
 
-   elm_progressbar_value_set(wd->summary.pb_cpu, (ui->cpu_usage / 100.0) / 
online);
-   elm_object_part_text_set(wd->summary.pb_cpu, "elm.text.status",
-                            eina_slstr_printf("%1.0f %%", ui->cpu_usage));
+   elm_progressbar_value_set(wd->summary.pb_cpu, ui->cpu_usage / 100.0);
 
    eina_strbuf_reset(buf);
 

-- 


Reply via email to