forked from enlightenment/evisum
bg_poll: use existing api...
This commit is contained in:
parent
30468c030a
commit
a6694b4c9a
|
@ -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();
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue