This is an automated email from the git hooks/post-receive script.

git pushed a commit to branch master
in repository evisum.

View the commit online.

commit e9721b700f9ad1f863de84138d4cc34c0ef5b688
Author: Alastair Poole <[email protected]>
AuthorDate: Fri May 22 02:36:16 2026 +0100

    enigmatic: move process i/o into enigmatic.
---
 NEWS                                  |   8 +-
 VERSION                               |   2 +-
 meson.build                           |   2 +-
 src/bin/enigmatic/enigmatic_config.c  | 112 ++++++++++++++++++++++++--
 src/bin/enigmatic/enigmatic_config.h  |   2 +-
 src/bin/enigmatic/enigmatic_main.c    |  12 +--
 src/bin/enigmatic/monitor/processes.c |  69 +++++++++++++---
 src/bin/enigmatic/system/process.h    |   5 ++
 src/bin/ui/evisum_ui_process_list.c   | 141 +--------------------------------
 src/bin/ui/evisum_ui_process_view.c   | 143 ----------------------------------
 10 files changed, 184 insertions(+), 312 deletions(-)

diff --git a/NEWS b/NEWS
index 5b60ec9..0bfe073 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,10 @@
-============
+=============
+Evisum 2.0.10
+=============
+
+  * Move process i/o calculations completely into enigmatic.
+    Evisum only displays values.
+
 Evisum 2.0.9
 ============
 
diff --git a/VERSION b/VERSION
index 09843e3..0a69206 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.0.9
+2.0.10
diff --git a/meson.build b/meson.build
index 214f90c..ece69f9 100644
--- a/meson.build
+++ b/meson.build
@@ -1,6 +1,6 @@
 ##### Project
 project('evisum', 'c',
-        version       : '2.0.9',
+        version       : '2.0.10',
         meson_version : '>= 0.56.0')
 
 efl_version = '>= 1.27.0'
diff --git a/src/bin/enigmatic/enigmatic_config.c b/src/bin/enigmatic/enigmatic_config.c
index 06bfd38..1ff6240 100644
--- a/src/bin/enigmatic/enigmatic_config.c
+++ b/src/bin/enigmatic/enigmatic_config.c
@@ -4,6 +4,10 @@
 #include <Eina.h>
 #include <Eet.h>
 #include <Ecore_File.h>
+#include <dirent.h>
+#include <errno.h>
+#include <sys/stat.h>
+#include <unistd.h>
 
 static Eet_Data_Descriptor *_enigmatic_conf_desc = NULL;
 
@@ -65,12 +69,108 @@ _config_defaults(void)
   return config;
 }
 
+static Eina_Bool
+_path_join(char *buf, size_t size, const char *dir, const char *name)
+{
+   int n;
+
+   n = snprintf(buf, size, "%s/%s", dir, name);
+   return ((n >= 0) && ((size_t) n < size));
+}
+
+static Eina_Bool
+_cache_entry_remove(const char *path)
+{
+   struct stat st;
+
+   if (lstat(path, &st) == -1)
+     return (errno == ENOENT);
+
+   if (S_ISDIR(st.st_mode))
+     {
+        DIR *dir;
+        struct dirent *entry;
+
+        dir = opendir(path);
+        if (!dir)
+          return EINA_FALSE;
+
+        while ((entry = readdir(dir)))
+          {
+             char child[PATH_MAX];
+
+             if ((!strcmp(entry->d_name, ".")) || (!strcmp(entry->d_name, "..")))
+               continue;
+
+             if (!_path_join(child, sizeof(child), path, entry->d_name))
+               {
+                  closedir(dir);
+                  return EINA_FALSE;
+               }
+             if (!_cache_entry_remove(child))
+               {
+                  closedir(dir);
+                  return EINA_FALSE;
+               }
+          }
+
+        closedir(dir);
+        return !rmdir(path);
+     }
+
+   return !unlink(path);
+}
+
+static void
+_cache_dir_clear(void)
+{
+   char path[PATH_MAX];
+   DIR *dir;
+   struct dirent *entry;
+   Eina_Bool ok = EINA_TRUE;
+
+   snprintf(path, sizeof(path), "%s/%s", enigmatic_cache_dir_get(), PACKAGE);
+
+   dir = opendir(path);
+   if (!dir)
+     {
+        if (errno == ENOENT)
+          ok = EINA_TRUE;
+        else
+          ok = EINA_FALSE;
+        goto done;
+     }
+
+   while ((entry = readdir(dir)))
+     {
+        char child[PATH_MAX];
+
+        if ((!strcmp(entry->d_name, ".")) || (!strcmp(entry->d_name, "..")))
+          continue;
+
+        if (!_path_join(child, sizeof(child), path, entry->d_name))
+          {
+             ok = EINA_FALSE;
+             continue;
+          }
+        if (!_cache_entry_remove(child))
+          ok = EINA_FALSE;
+     }
+
+   closedir(dir);
+
+done:
+   if (ok)
+     fprintf(stdout, "Enigmatic cache directory cleared after config version change.\n");
+   else
+     fprintf(stdout, "Enigmatic cache directory cleanup after config version change was incomplete.\n");
+}
+
 Enigmatic_Config *
 enigmatic_config_load(void)
 {
    Eet_File *f;
    char *path;
-   int maj, min;
    Enigmatic_Config *config = NULL;
 
    path = enigmatic_config_file_path();
@@ -93,16 +193,12 @@ enigmatic_config_load(void)
 
              eet_close(f);
 
-             maj = config->version >> 16 & 0xffff;
-             min = config->version & 0xffff;
-             if ((maj) && (maj != ENIGMATIC_CONFIG_VERSION_MAJOR))
-               ERROR("config version mismatch.");
-
-             if (min != ENIGMATIC_CONFIG_VERSION_MINOR)
+             if (config->version != ENIGMATIC_CONFIG_VERSION)
                {
-                  fprintf(stderr, "reinitialising configuration\n");
+                  _cache_dir_clear();
                   free(config);
                   config = _config_defaults();
+                  enigmatic_config_save(config);
                }
           }
         free(path);
diff --git a/src/bin/enigmatic/enigmatic_config.h b/src/bin/enigmatic/enigmatic_config.h
index e771f4e..9eb56b4 100644
--- a/src/bin/enigmatic/enigmatic_config.h
+++ b/src/bin/enigmatic/enigmatic_config.h
@@ -3,7 +3,7 @@
 #include "Events.h"
 
 #define ENIGMATIC_CONFIG_VERSION_MAJOR 0x0001
-#define ENIGMATIC_CONFIG_VERSION_MINOR 0x0004
+#define ENIGMATIC_CONFIG_VERSION_MINOR 0x0005
 
 #define ENIGMATIC_CONFIG_VERSION ((ENIGMATIC_CONFIG_VERSION_MAJOR << 16) | ENIGMATIC_CONFIG_VERSION_MINOR)
 
diff --git a/src/bin/enigmatic/enigmatic_main.c b/src/bin/enigmatic/enigmatic_main.c
index 610aa19..3571315 100644
--- a/src/bin/enigmatic/enigmatic_main.c
+++ b/src/bin/enigmatic/enigmatic_main.c
@@ -136,9 +136,6 @@ enigmatic_init(Enigmatic *enigmatic)
    enigmatic->pid = getpid();
    enigmatic_pidfile_create(enigmatic);
 
-   enigmatic_config_init();
-   enigmatic->config = enigmatic_config_load();
-
    enigmatic->device_refresh_interval = 900 * 10;
    enigmatic->log.hour = -1;
    enigmatic->interval = enigmatic->interval_update = enigmatic->config->interval;
@@ -225,13 +222,16 @@ int main(int argc, char **argv)
           }
      }
 
-   lock_fd = enigmatic_log_lock();
-   atexit(cb_exit);
-
    ecore_init();
 
    Enigmatic *enigmatic = calloc(1, sizeof(Enigmatic));
    EINA_SAFETY_ON_NULL_RETURN_VAL(enigmatic, 1);
+
+   enigmatic_config_init();
+   enigmatic->config = enigmatic_config_load();
+
+   lock_fd = enigmatic_log_lock();
+   atexit(cb_exit);
    enigmatic->lock_fd = lock_fd;
 
    enigmatic_init(enigmatic);
diff --git a/src/bin/enigmatic/monitor/processes.c b/src/bin/enigmatic/monitor/processes.c
index c95faaf..e1f494e 100644
--- a/src/bin/enigmatic/monitor/processes.c
+++ b/src/bin/enigmatic/monitor/processes.c
@@ -182,32 +182,75 @@ _process_log_string(Enigmatic *enigmatic, pid_t pid, Object_Type object_type, co
    *changed = 1;
 }
 
-static void
-_process_network_totals_update(Proc_Info *proc, const Proc_Info *prev)
+static int64_t
+_process_elapsed_get(const Enigmatic *enigmatic, const Proc_Info *prev)
 {
-   uint64_t raw_in, raw_out;
+   int64_t elapsed = 0;
+
+   if ((prev) && (enigmatic->poll_time > prev->sample_time))
+     elapsed = enigmatic->poll_time - prev->sample_time;
+   if (elapsed <= 0)
+     elapsed = enigmatic->interval;
+   if (elapsed <= 0)
+     elapsed = 1;
+
+   return elapsed;
+}
+
+static void
+_process_io_rates_update(Enigmatic *enigmatic, Proc_Info *proc, const Proc_Info *prev)
+{
+   uint64_t raw_in, raw_out, raw_disk_read, raw_disk_write;
+   uint64_t total_in, total_out;
+   int64_t elapsed;
 
    if (!proc) return;
 
    raw_in = proc->net_in;
    raw_out = proc->net_out;
+   raw_disk_read = proc->disk_read;
+   raw_disk_write = proc->disk_write;
+
    proc->net_in_raw = raw_in;
    proc->net_out_raw = raw_out;
+   proc->disk_read_raw = raw_disk_read;
+   proc->disk_write_raw = raw_disk_write;
+   proc->sample_time = enigmatic->poll_time;
 
    if (!prev || (proc->start != prev->start))
      {
         proc->net_in = 0;
         proc->net_out = 0;
+        proc->net_in_total = 0;
+        proc->net_out_total = 0;
+        proc->disk_read = 0;
+        proc->disk_write = 0;
         return;
      }
 
-   proc->net_in = prev->net_in;
-   proc->net_out = prev->net_out;
+   elapsed = _process_elapsed_get(enigmatic, prev);
 
+   total_in = prev->net_in_total;
+   total_out = prev->net_out_total;
    if (raw_in >= prev->net_in_raw)
-     proc->net_in += raw_in - prev->net_in_raw;
+     total_in += raw_in - prev->net_in_raw;
    if (raw_out >= prev->net_out_raw)
-     proc->net_out += raw_out - prev->net_out_raw;
+     total_out += raw_out - prev->net_out_raw;
+
+   proc->net_in_total = total_in;
+   proc->net_out_total = total_out;
+   proc->net_in = (total_in - prev->net_in_total) / elapsed;
+   proc->net_out = (total_out - prev->net_out_total) / elapsed;
+
+   if (raw_disk_read >= prev->disk_read_raw)
+     proc->disk_read = (raw_disk_read - prev->disk_read_raw) / elapsed;
+   else
+     proc->disk_read = 0;
+
+   if (raw_disk_write >= prev->disk_write_raw)
+     proc->disk_write = (raw_disk_write - prev->disk_write_raw) / elapsed;
+   else
+     proc->disk_write = 0;
 }
 
 static void
@@ -254,7 +297,7 @@ enigmatic_monitor_processes(Enigmatic *enigmatic, Eina_Hash **cache_hash)
         *cache_hash = eina_hash_int32_new(cb_process_free);
         EINA_LIST_FOREACH(processes, l, proc)
           {
-             _process_network_totals_update(proc, NULL);
+             _process_io_rates_update(enigmatic, proc, NULL);
              DEBUG("add pid => %i => %s", proc->pid, proc->command);
              proc->is_new = 1;
              int32_t pid = proc->pid;
@@ -303,7 +346,7 @@ enigmatic_monitor_processes(Enigmatic *enigmatic, Eina_Hash **cache_hash)
    EINA_LIST_FREE(processes, proc)
      {
         Proc_Info_Log old_log, new_log;
-        int64_t cpu_time_delta, cpu_usage_now, cpu_usage_prev;
+        int64_t cpu_time_delta, cpu_usage_now, cpu_usage_prev, elapsed;
 
         int32_t pid = proc->pid;
         p1 = eina_hash_find(*cache_hash, &pid);
@@ -311,7 +354,7 @@ enigmatic_monitor_processes(Enigmatic *enigmatic, Eina_Hash **cache_hash)
           {
              Proc_Info_Log proc_log;
 
-             _process_network_totals_update(proc, NULL);
+             _process_io_rates_update(enigmatic, proc, NULL);
              proc_info_log_fill(proc, &proc_log);
              enigmatic_log_process_write(enigmatic, &proc_log);
 
@@ -321,15 +364,17 @@ enigmatic_monitor_processes(Enigmatic *enigmatic, Eina_Hash **cache_hash)
              continue;
           }
 
+        elapsed = _process_elapsed_get(enigmatic, p1);
+
         if (proc != p1)
-          _process_network_totals_update(proc, p1);
+          _process_io_rates_update(enigmatic, proc, p1);
 
         proc_info_log_fill(p1, &old_log);
         proc_info_log_fill(proc, &new_log);
 
         cpu_time_delta = new_log.cpu_time - old_log.cpu_time;
         cpu_usage_prev = (int64_t) old_log.cpu_usage;
-        cpu_usage_now = cpu_time_delta / enigmatic->interval;
+        cpu_usage_now = cpu_time_delta / elapsed;
         _process_log_delta(enigmatic, proc->pid, PROCESS_PPID, (int64_t) new_log.ppid - (int64_t) old_log.ppid, &changed);
         _process_log_delta(enigmatic, proc->pid, PROCESS_UID, (int64_t) new_log.uid - (int64_t) old_log.uid, &changed);
         _process_log_delta(enigmatic, proc->pid, PROCESS_NICE, new_log.nice - old_log.nice, &changed);
diff --git a/src/bin/enigmatic/system/process.h b/src/bin/enigmatic/system/process.h
index fe5f032..10290e3 100644
--- a/src/bin/enigmatic/system/process.h
+++ b/src/bin/enigmatic/system/process.h
@@ -31,8 +31,13 @@ typedef struct _Proc_Info
    uint64_t    net_out;
    uint64_t    net_in_raw;
    uint64_t    net_out_raw;
+   uint64_t    net_in_total;
+   uint64_t    net_out_total;
    uint64_t    disk_read;
    uint64_t    disk_write;
+   uint64_t    disk_read_raw;
+   uint64_t    disk_write_raw;
+   uint32_t    sample_time;
 
    char       *command;
    char       *arguments;
diff --git a/src/bin/ui/evisum_ui_process_list.c b/src/bin/ui/evisum_ui_process_list.c
index d3236d3..24a2267 100644
--- a/src/bin/ui/evisum_ui_process_list.c
+++ b/src/bin/ui/evisum_ui_process_list.c
@@ -24,7 +24,6 @@ typedef struct {
     Ecore_Thread *thread;
     Eina_Hash *icon_cache;
     Ecore_Event_Handler *handler;
-    Eina_Hash *proc_usage_cache;
     Eina_Bool skip_wait;
     Eina_Bool skip_update;
     Eina_Bool update_every_item;
@@ -98,16 +97,6 @@ typedef struct {
 #define PROC_COL_RESIZE_HIT_WIDTH 8
 #define PROC_COL_MIN_WIDTH        48
 
-typedef struct {
-    int64_t pid;
-    int64_t start;
-    uint32_t sample_time;
-    uint64_t net_in;
-    uint64_t net_out;
-    uint64_t disk_read;
-    uint64_t disk_write;
-} Proc_Usage_Cache;
-
 typedef struct {
     const char *name;
     const char *desc;
@@ -1304,21 +1293,6 @@ _evisum_ui_process_list_uid_trim(Eina_List *list, uid_t uid) {
     return list;
 }
 
-static void
-_evisum_ui_process_list_usage_cache_free_cb(void *data) {
-    Proc_Usage_Cache *cache = data;
-    free(cache);
-}
-
-static uint32_t
-_evisum_ui_process_list_sample_time_get(void) {
-    uint32_t sample_time;
-
-    sample_time = evisum_engine_history_time_get();
-    if (!sample_time) sample_time = evisum_engine_live_time_get();
-    return sample_time;
-}
-
 static Eina_Bool
 _evisum_ui_process_list_process_ignore(Evisum_Ui_Process_List_View *view, Proc_Info *proc) {
     Evisum_Ui *ui = view->ui;
@@ -1341,112 +1315,17 @@ _evisum_ui_process_list_process_ignore(Evisum_Ui_Process_List_View *view, Proc_I
 }
 
 static Eina_List *
-_evisum_ui_process_list_search_trim_cache(Eina_List *list, Evisum_Ui_Process_List_View *view) {
+_evisum_ui_process_list_search_trim(Eina_List *list, Evisum_Ui_Process_List_View *view) {
     Eina_List *l, *l_next;
-    Eina_List *purge = NULL;
     Proc_Info *proc;
-    Proc_Usage_Cache *cache;
-    Eina_Hash *active_pids;
-    uint32_t sample_time;
-    void *d = NULL;
-
-    sample_time = _evisum_ui_process_list_sample_time_get();
-    active_pids = eina_hash_int64_new(NULL);
 
     EINA_LIST_FOREACH_SAFE(list, l, l_next, proc) {
-        int64_t id = proc->pid;
-
-        if (active_pids)
-            eina_hash_add(active_pids, &id, proc);
-
         if (_evisum_ui_process_list_process_ignore(view, proc)) {
             proc_info_free(proc);
             list = eina_list_remove_list(list, l);
-        } else {
-            if ((cache = eina_hash_find(view->proc_usage_cache, &id))) {
-                uint64_t net_in_abs = proc->net_in;
-                uint64_t net_out_abs = proc->net_out;
-                uint64_t disk_read_abs = proc->disk_read;
-                uint64_t disk_write_abs = proc->disk_write;
-                int elapsed = 1;
-
-                if (sample_time && cache->sample_time && (sample_time > cache->sample_time))
-                    elapsed = sample_time - cache->sample_time;
-
-                if (cache->start != proc->start) {
-                    cache->start = proc->start;
-                    cache->sample_time = sample_time;
-                    cache->net_in = net_in_abs;
-                    cache->net_out = net_out_abs;
-                    cache->disk_read = proc->disk_read;
-                    cache->disk_write = proc->disk_write;
-                    proc->net_in = 0;
-                    proc->net_out = 0;
-                    proc->disk_read = 0;
-                    proc->disk_write = 0;
-                    continue;
-                }
-
-                if (cache->net_in && net_in_abs >= cache->net_in) proc->net_in = (net_in_abs - cache->net_in) / elapsed;
-                else proc->net_in = 0;
-
-                if (cache->net_out && net_out_abs >= cache->net_out)
-                    proc->net_out = (net_out_abs - cache->net_out) / elapsed;
-                else proc->net_out = 0;
-
-                if (cache->disk_read && disk_read_abs >= cache->disk_read)
-                    proc->disk_read = (disk_read_abs - cache->disk_read) / elapsed;
-                else proc->disk_read = 0;
-
-                if (cache->disk_write && disk_write_abs >= cache->disk_write)
-                    proc->disk_write = (disk_write_abs - cache->disk_write) / elapsed;
-                else proc->disk_write = 0;
-
-                cache->net_in = net_in_abs;
-                cache->net_out = net_out_abs;
-                cache->disk_read = disk_read_abs;
-                cache->disk_write = disk_write_abs;
-                cache->sample_time = sample_time;
-            } else {
-                cache = calloc(1, sizeof(Proc_Usage_Cache));
-                if (cache) {
-                    uint64_t net_in_abs = proc->net_in;
-                    uint64_t net_out_abs = proc->net_out;
-                    cache->pid = id;
-                    cache->start = proc->start;
-                    cache->sample_time = sample_time;
-                    cache->net_in = net_in_abs;
-                    cache->net_out = net_out_abs;
-                    cache->disk_read = proc->disk_read;
-                    cache->disk_write = proc->disk_write;
-                    proc->net_in = 0;
-                    proc->net_out = 0;
-                    proc->disk_read = 0;
-                    proc->disk_write = 0;
-                    if (!eina_hash_add(view->proc_usage_cache, &id, cache))
-                        free(cache);
-                }
-            }
         }
     }
 
-    if (active_pids) {
-        Eina_Iterator *it = eina_hash_iterator_data_new(view->proc_usage_cache);
-        while (eina_iterator_next(it, &d)) {
-            cache = d;
-            if (!eina_hash_find(active_pids, &cache->pid))
-                purge = eina_list_prepend(purge, cache);
-        }
-        eina_iterator_free(it);
-
-        EINA_LIST_FREE(purge, cache) {
-            int64_t id = cache->pid;
-            eina_hash_del(view->proc_usage_cache, &id, NULL);
-        }
-
-        eina_hash_free(active_pids);
-    }
-
     return list;
 }
 
@@ -1463,7 +1342,7 @@ _evisum_ui_process_list_get(Evisum_Ui_Process_List_View *view) {
 
     if (ui->proc.show_user) list = _evisum_ui_process_list_uid_trim(list, getuid());
 
-    list = _evisum_ui_process_list_search_trim_cache(list, view);
+    list = _evisum_ui_process_list_search_trim(list, view);
     list = _evisum_ui_process_list_sort(list, view);
 
     return list;
@@ -2255,26 +2134,12 @@ _evisum_ui_process_list_win_alpha_set(Evisum_Ui_Process_List_View *view) {
 
 static Eina_Bool
 _evisum_ui_process_list_config_changed_cb(void *data, int type EINA_UNUSED, void *event EINA_UNUSED) {
-    Eina_Iterator *it;
     Evisum_Ui *ui;
     Evisum_Ui_Process_List_View *view;
-    void *d = NULL;
 
     view = data;
     ui = view->ui;
 
-    it = eina_hash_iterator_data_new(view->proc_usage_cache);
-    while (eina_iterator_next(it, &d)) {
-        Proc_Usage_Cache *cache = d;
-        cache->start = 0;
-        cache->net_in = 0;
-        cache->net_out = 0;
-        cache->disk_read = 0;
-        cache->disk_write = 0;
-        cache->sample_time = 0;
-    }
-    eina_iterator_free(it);
-
     evisum_ui_widget_exel_genlist_policy_set(view->widget_exel, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO);
     view->skip_wait = 1;
 
@@ -2388,7 +2253,6 @@ _evisum_ui_process_list_win_del_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED,
 
     if (view->widget_exel) evisum_ui_widget_exel_free(view->widget_exel);
 
-    if (view->proc_usage_cache) eina_hash_free(view->proc_usage_cache);
     if (view->history.lock_init) eina_lock_free(&view->history.lock);
 
     free(view);
@@ -2459,7 +2323,6 @@ evisum_ui_process_list_win_add(Evisum_Ui *ui) {
     elm_object_content_set(win, content);
 
     view->icon_cache = evisum_icon_cache_new();
-    view->proc_usage_cache = eina_hash_int64_new(_evisum_ui_process_list_usage_cache_free_cb);
 
     evas_object_event_callback_add(win, EVAS_CALLBACK_DEL, _evisum_ui_process_list_win_del_cb, view);
     evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _evisum_ui_process_list_win_resize_cb, view);
diff --git a/src/bin/ui/evisum_ui_process_view.c b/src/bin/ui/evisum_ui_process_view.c
index cf47c1b..385db1c 100644
--- a/src/bin/ui/evisum_ui_process_view.c
+++ b/src/bin/ui/evisum_ui_process_view.c
@@ -29,7 +29,6 @@ typedef struct {
     Eina_Bool ignore_initial_resize;
 
     Eina_Hash *icon_cache;
-    Eina_Hash *proc_usage_cache;
 
     struct {
         Evas_Object *entry_cmd;
@@ -75,23 +74,6 @@ typedef struct {
 
 } Evisum_Ui_Process_View;
 
-typedef struct {
-    int64_t start;
-    uint32_t sample_time;
-    int64_t cpu_time;
-    double cpu_usage;
-#if defined(__linux__)
-    uint64_t net_in;
-    uint64_t net_out;
-    uint64_t disk_read;
-    uint64_t disk_write;
-    uint64_t net_in_rate;
-    uint64_t net_out_rate;
-    uint64_t disk_read_rate;
-    uint64_t disk_write_rate;
-#endif
-} Proc_Usage_Cache;
-
 static uint64_t _evisum_ui_process_view_mem_total_get(Evisum_Ui_Process_View *view);
 static void _evisum_ui_process_view_progressbar_unset(Evas_Object *pb);
 static void _evisum_ui_process_view_progressbar_mem_set(Evas_Object *pb, uint64_t used,
@@ -118,20 +100,6 @@ _evisum_ui_process_view_exe_response(const char *command) {
     return lines;
 }
 
-static void
-_evisum_ui_process_view_usage_cache_free_cb(void *data) {
-    Proc_Usage_Cache *cache = data;
-    free(cache);
-}
-
-static uint32_t
-_evisum_ui_process_view_sample_time_get(void) {
-    uint32_t sample_time;
-
-    sample_time = evisum_engine_live_time_get();
-    return sample_time;
-}
-
 static void
 _evisum_ui_process_view_btn_ppid_clicked_cb(void *data, Evas_Object *obj, void *event_info) {
     Evisum_Ui_Process_View *view;
@@ -499,21 +467,9 @@ static void
 _evisum_ui_process_view_proc_info_feedback_cb(void *data, Ecore_Thread *thread, void *msg) {
     Evisum_Ui_Process_View *view;
     Proc_Info *proc;
-    Proc_Usage_Cache *cache;
-    int64_t id;
-    int elapsed;
-    uint32_t sample_time;
-#if defined(__linux__)
-    uint64_t net_in_abs = 0;
-    uint64_t net_out_abs = 0;
-    uint64_t disk_read_abs = 0;
-    uint64_t disk_write_abs = 0;
-#endif
 
     view = data;
     proc = msg;
-    elapsed = 1;
-    sample_time = _evisum_ui_process_view_sample_time_get();
 
     if (!proc || (view->start && (proc->start != view->start))) {
         if (proc) proc_info_free(proc);
@@ -526,104 +482,6 @@ _evisum_ui_process_view_proc_info_feedback_cb(void *data, Ecore_Thread *thread,
         return;
     }
 
-    if (!view->proc_usage_cache)
-        view->proc_usage_cache = eina_hash_int64_new(_evisum_ui_process_view_usage_cache_free_cb);
-
-    id = proc->pid;
-    cache = view->proc_usage_cache ? eina_hash_find(view->proc_usage_cache, &id) : NULL;
-#if defined(__linux__)
-    disk_read_abs = proc->disk_read;
-    disk_write_abs = proc->disk_write;
-    net_in_abs = proc->net_in;
-    net_out_abs = proc->net_out;
-#endif
-    if (!cache) {
-        cache = calloc(1, sizeof(Proc_Usage_Cache));
-        if (cache) {
-            cache->start = proc->start;
-            cache->sample_time = sample_time;
-            cache->cpu_time = proc->cpu_time;
-#if defined(__linux__)
-            cache->net_in = net_in_abs;
-            cache->net_out = net_out_abs;
-            cache->disk_read = disk_read_abs;
-            cache->disk_write = disk_write_abs;
-            proc->net_in = 0;
-            proc->net_out = 0;
-            proc->disk_read = 0;
-            proc->disk_write = 0;
-#endif
-            proc->cpu_usage = 0.0;
-            if (!view->proc_usage_cache || !eina_hash_add(view->proc_usage_cache, &id, cache))
-                free(cache);
-        } else {
-            proc->cpu_usage = 0.0;
-#if defined(__linux__)
-            proc->net_in = 0;
-            proc->net_out = 0;
-            proc->disk_read = 0;
-            proc->disk_write = 0;
-#endif
-        }
-    } else if (cache->start != proc->start) {
-        cache->start = proc->start;
-        cache->sample_time = sample_time;
-        cache->cpu_time = proc->cpu_time;
-#if defined(__linux__)
-        cache->net_in = net_in_abs;
-        cache->net_out = net_out_abs;
-        cache->disk_read = disk_read_abs;
-        cache->disk_write = disk_write_abs;
-        proc->net_in = 0;
-        proc->net_out = 0;
-        proc->disk_read = 0;
-        proc->disk_write = 0;
-#endif
-        proc->cpu_usage = 0.0;
-    } else if (sample_time <= cache->sample_time) {
-        proc->cpu_usage = cache->cpu_usage;
-#if defined(__linux__)
-        proc->net_in = cache->net_in_rate;
-        proc->net_out = cache->net_out_rate;
-        proc->disk_read = cache->disk_read_rate;
-        proc->disk_write = cache->disk_write_rate;
-#endif
-    } else {
-        if (sample_time && cache->sample_time && (sample_time > cache->sample_time))
-            elapsed = sample_time - cache->sample_time;
-
-        if (proc->cpu_time >= cache->cpu_time)
-            proc->cpu_usage = (double) (proc->cpu_time - cache->cpu_time) / elapsed;
-        else proc->cpu_usage = 0.0;
-        cache->cpu_usage = proc->cpu_usage;
-        cache->cpu_time = proc->cpu_time;
-        cache->sample_time = sample_time;
-#if defined(__linux__)
-        if (net_in_abs >= cache->net_in) proc->net_in = (net_in_abs - cache->net_in) / elapsed;
-        else proc->net_in = 0;
-
-        if (net_out_abs >= cache->net_out) proc->net_out = (net_out_abs - cache->net_out) / elapsed;
-        else proc->net_out = 0;
-
-        if (disk_read_abs >= cache->disk_read)
-            proc->disk_read = (disk_read_abs - cache->disk_read) / elapsed;
-        else proc->disk_read = 0;
-
-        if (disk_write_abs >= cache->disk_write)
-            proc->disk_write = (disk_write_abs - cache->disk_write) / elapsed;
-        else proc->disk_write = 0;
-
-        cache->net_in_rate = proc->net_in;
-        cache->net_out_rate = proc->net_out;
-        cache->disk_read_rate = proc->disk_read;
-        cache->disk_write_rate = proc->disk_write;
-        cache->net_in = net_in_abs;
-        cache->net_out = net_out_abs;
-        cache->disk_read = disk_read_abs;
-        cache->disk_write = disk_write_abs;
-#endif
-    }
-
     _evisum_ui_process_view_general_view_update(view, proc);
 
     proc_info_free(proc);
@@ -1131,7 +989,6 @@ _evisum_ui_process_view_win_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object
 
     evisum_ui_config_save(view->ui);
 
-    if (view->proc_usage_cache) eina_hash_free(view->proc_usage_cache);
     free(view->selected_cmd);
     if (view->children.widget_exel) evisum_ui_widget_exel_free(view->children.widget_exel);
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.

Reply via email to