background: move this to its own namespace.

This commit is contained in:
Alastair Poole 2021-05-16 10:54:11 +01:00
parent e906cfffc8
commit 58a039a820
6 changed files with 95 additions and 83 deletions

View File

@ -0,0 +1,78 @@
#include "evisum_background.h"
#include "../system/filesystems.h"
#include "../ui/evisum_ui.h"
#include <Eina.h>
void
background_poller_cb(void *data, Ecore_Thread *thread)
{
meminfo_t memory;
power_t power;
int32_t poll_count = 0;
Battery *bat;
Evisum_Ui *ui = data;
system_memory_usage_get(&memory);
ui->mem_total = memory.total;
ui->mem_used = memory.used;
system_power_state_get(&power);
if (power.battery_count)
{
ui->have_power = power.have_ac;
for (int i = 0; i < power.battery_count; i++)
{
if (!power.batteries[i]->present) continue;
bat = calloc(1, sizeof(Battery));
bat->index = i;
snprintf(bat->model, sizeof(bat->model), "%s", power.batteries[i]->model);
snprintf(bat->vendor, sizeof(bat->vendor), "%s", power.batteries[i]->vendor);
bat->usage = power.batteries[i]->percent;
ui->batteries = eina_list_append(ui->batteries, bat);
}
}
system_power_state_free(&power);
while (!ecore_thread_check(thread))
{
int ncpu;
double percent = 0.0;
cpu_core_t **cores = system_cpu_usage_delayed_get(&ncpu, 250000);
for (int i = 0; i < ncpu; i++)
{
percent += cores[i]->percent;
free(cores[i]);
}
free(cores);
system_memory_usage_get(&memory);
ui->mem_used = memory.used;
if (file_system_in_use("ZFS"))
ui->mem_used += memory.zfs_arc_used;
ui->cpu_usage = percent / system_cpu_online_count_get();
if ((!(poll_count % 4)) && (ui->batteries))
{
Eina_List *l;
system_power_state_get(&power);
ui->have_power = power.have_ac;
for (int i = 0; i < power.battery_count; i++)
{
if (!power.batteries[i]->present) continue;
l = eina_list_nth_list(ui->batteries, i);
if (!l) continue;
bat = eina_list_data_get(l);
bat->usage = power.batteries[i]->percent;
}
system_power_state_free(&power);
}
poll_count++;
}
EINA_LIST_FREE(ui->batteries, bat)
free(bat);
}

View File

@ -0,0 +1,9 @@
#ifndef EVISUM_BACKGROUND_H
#define EVISUM_BACKGROUND_H
#include <Ecore.h>
void
background_poller_cb(void *data, Ecore_Thread *thread);
#endif

View File

@ -0,0 +1,4 @@
src += files([
'evisum_background.c',
'evisum_background.h',
])

View File

@ -8,7 +8,7 @@
#include "evisum_config.h"
#include "evisum_server.h"
#include "ui/evisum_ui.h"
#include "system/filesystems.h"
#include "background/evisum_background.h"
static Eina_Bool
_shutdown_cb(void *data, int type, void *event EINA_UNUSED)
@ -30,79 +30,6 @@ _signals(Evisum_Ui *ui)
ui->handler_sig = ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, _shutdown_cb, ui);
}
// XXX!!!
static void
_background_poller_cb(void *data, Ecore_Thread *thread)
{
meminfo_t memory;
power_t power;
int32_t poll_count = 0;
Battery *bat;
Evisum_Ui *ui = data;
system_memory_usage_get(&memory);
ui->mem_total = memory.total;
ui->mem_used = memory.used;
system_power_state_get(&power);
if (power.battery_count)
{
ui->have_power = power.have_ac;
for (int i = 0; i < power.battery_count; i++)
{
if (!power.batteries[i]->present) continue;
bat = calloc(1, sizeof(Battery));
bat->index = i;
snprintf(bat->model, sizeof(bat->model), "%s", power.batteries[i]->model);
snprintf(bat->vendor, sizeof(bat->vendor), "%s", power.batteries[i]->vendor);
bat->usage = power.batteries[i]->percent;
ui->batteries = eina_list_append(ui->batteries, bat);
}
}
system_power_state_free(&power);
while (!ecore_thread_check(thread))
{
int ncpu;
double percent = 0.0;
cpu_core_t **cores = system_cpu_usage_delayed_get(&ncpu, 250000);
for (int i = 0; i < ncpu; i++)
{
percent += cores[i]->percent;
free(cores[i]);
}
free(cores);
system_memory_usage_get(&memory);
ui->mem_used = memory.used;
if (file_system_in_use("ZFS"))
ui->mem_used += memory.zfs_arc_used;
ui->cpu_usage = percent / system_cpu_online_count_get();
if ((!(poll_count % 4)) && (ui->batteries))
{
Eina_List *l;
system_power_state_get(&power);
ui->have_power = power.have_ac;
for (int i = 0; i < power.battery_count; i++)
{
if (!power.batteries[i]->present) continue;
l = eina_list_nth_list(ui->batteries, i);
if (!l) continue;
bat = eina_list_data_get(l);
bat->usage = power.batteries[i]->percent;
}
system_power_state_free(&power);
}
poll_count++;
}
EINA_LIST_FREE(ui->batteries, bat)
free(bat);
}
int
elm_main(int argc, char **argv)
{
@ -182,7 +109,7 @@ elm_main(int argc, char **argv)
evisum_server_init(ui);
evisum_ui_activate(ui, action, pid);
ui->background_poll_thread = 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();

View File

@ -4,6 +4,7 @@ src = []
subdir('system')
subdir('ui')
subdir('background')
src += files([
'main.c',

View File

@ -1285,15 +1285,8 @@ _process_list_feedback_cb(void *data, Ecore_Thread *thread EINA_UNUSED,
eina_list_free(real);
#endif
#if 0
printf("active %d and inactive %d => %d (realized)\n",
eina_list_count(wd->cache->active),
eina_list_count(wd->cache->inactive), n);
#endif
if (wd->first_run)
{
_first_run_tasks(wd);
}
_first_run_tasks(wd);
wd->poll_count++;