netstar pushed a commit to branch master.

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

commit 0ee2260c3fa84fdfc7cf5a54fb126182dd7a087a
Author: Alastair Poole <nets...@gmail.com>
Date:   Wed Feb 24 19:22:47 2021 +0000

    fields: fill the screen with text...
---
 src/bin/system/process.c     |  38 ++++++++++
 src/bin/system/process.h     |   6 ++
 src/bin/ui/ui_process_list.c | 170 +++++++++++++++++++++++++++++++++----------
 src/bin/ui/ui_process_list.h |  14 ++--
 4 files changed, 185 insertions(+), 43 deletions(-)

diff --git a/src/bin/system/process.c b/src/bin/system/process.c
index 8151184..8c7a881 100644
--- a/src/bin/system/process.c
+++ b/src/bin/system/process.c
@@ -1310,6 +1310,25 @@ proc_sort_by_size(const void *p1, const void *p2)
    return 0;
 }
 
+int
+proc_sort_by_virt(const void *p1, const void *p2)
+{
+   const Proc_Info *inf1, *inf2;
+   int64_t size1, size2;
+
+   inf1 = p1; inf2 = p2;
+
+   size1 = inf1->mem_virt;
+   size2 = inf2->mem_virt;
+
+   if (size1 > size2)
+     return 1;
+   if (size1 < size2)
+     return -1;
+
+   return 0;
+}
+
 int
 proc_sort_by_rss(const void *p1, const void *p2)
 {
@@ -1329,6 +1348,25 @@ proc_sort_by_rss(const void *p1, const void *p2)
    return 0;
 }
 
+int
+proc_sort_by_shared(const void *p1, const void *p2)
+{
+   const Proc_Info *inf1, *inf2;
+   int64_t size1, size2;
+
+   inf1 = p1; inf2 = p2;
+
+   size1 = inf1->mem_shared;
+   size2 = inf2->mem_shared;
+
+   if (size1 > size2)
+     return 1;
+   if (size1 < size2)
+     return -1;
+
+   return 0;
+}
+
 int
 proc_sort_by_time(const void *p1, const void *p2)
 {
diff --git a/src/bin/system/process.h b/src/bin/system/process.h
index 20229e4..cddc7ea 100644
--- a/src/bin/system/process.h
+++ b/src/bin/system/process.h
@@ -86,9 +86,15 @@ proc_sort_by_threads(const void *p1, const void *p2);
 int
 proc_sort_by_size(const void *p1, const void *p2);
 
+int
+proc_sort_by_virt(const void *p1, const void *p2);
+
 int
 proc_sort_by_rss(const void *p1, const void *p2);
 
+int
+proc_sort_by_shared(const void *p1, const void *p2);
+
 int
 proc_sort_by_time(const void *p1, const void *p2);
 
diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c
index 3e890e4..4c7ed5b 100644
--- a/src/bin/ui/ui_process_list.c
+++ b/src/bin/ui/ui_process_list.c
@@ -68,7 +68,9 @@ typedef struct
    Evas_Object            *btn_pri;
    Evas_Object            *btn_nice;
    Evas_Object            *btn_size;
+   Evas_Object            *btn_virt;
    Evas_Object            *btn_rss;
+   Evas_Object            *btn_shared;
    Evas_Object            *btn_state;
    Evas_Object            *btn_time;
    Evas_Object            *btn_cpu_usage;
@@ -127,8 +129,12 @@ _field_name(Proc_Field id)
         return _("Nice");
       case PROC_FIELD_SIZE:
         return _("Size");
+      case PROC_FIELD_VIRT:
+        return _("Virtual");
       case PROC_FIELD_RSS:
         return _("Reserved");
+      case PROC_FIELD_SHARED:
+        return _("Shared");
       case PROC_FIELD_STATE:
         return _("State");
       case PROC_FIELD_TIME:
@@ -406,11 +412,21 @@ _item_create(Evas_Object *obj)
         lb = _item_column_add(tb, "proc_size", i++);
         evas_object_size_hint_align_set(lb, 1.0, FILL);
      }
+   if (_field_enabled(PROC_FIELD_VIRT))
+     {
+        lb = _item_column_add(tb, "proc_virt", i++);
+        evas_object_size_hint_align_set(lb, 1.0, FILL);
+     }
    if (_field_enabled(PROC_FIELD_RSS))
      {
         lb = _item_column_add(tb, "proc_rss", i++);
         evas_object_size_hint_align_set(lb, 1.0, FILL);
      }
+   if (_field_enabled(PROC_FIELD_SHARED))
+     {
+        lb = _item_column_add(tb, "proc_shared", i++);
+        evas_object_size_hint_align_set(lb, 1.0, FILL);
+     }
    if (_field_enabled(PROC_FIELD_STATE))
      {
         lb = _item_column_add(tb, "proc_state", i++);
@@ -601,6 +617,18 @@ _content_get(void *data, Evas_Object *obj, const char 
*source)
         evas_object_show(lb);
      }
 
+   if (_field_enabled(PROC_FIELD_VIRT))
+     {
+        evas_object_geometry_get(pd->btn_rss, NULL, NULL, &w, NULL);
+        lb = evas_object_data_get(it->obj, "proc_virt");
+        snprintf(buf, sizeof(buf), "%s", evisum_size_format(proc->mem_virt));
+        if (strcmp(buf, elm_object_text_get(lb)))
+          elm_object_text_set(lb, buf);
+        rec = evas_object_data_get(lb, "rec");
+        evas_object_size_hint_min_set(rec, w, 1);
+        evas_object_show(lb);
+     }
+
    if (_field_enabled(PROC_FIELD_RSS))
      {
         evas_object_geometry_get(pd->btn_rss, NULL, NULL, &w, NULL);
@@ -613,6 +641,18 @@ _content_get(void *data, Evas_Object *obj, const char 
*source)
         evas_object_show(lb);
      }
 
+   if (_field_enabled(PROC_FIELD_SHARED))
+     {
+        evas_object_geometry_get(pd->btn_rss, NULL, NULL, &w, NULL);
+        lb = evas_object_data_get(it->obj, "proc_shared");
+        snprintf(buf, sizeof(buf), "%s", evisum_size_format(proc->mem_shared));
+        if (strcmp(buf, elm_object_text_get(lb)))
+          elm_object_text_set(lb, buf);
+        rec = evas_object_data_get(lb, "rec");
+        evas_object_size_hint_min_set(rec, w, 1);
+        evas_object_show(lb);
+     }
+
    if (_field_enabled(PROC_FIELD_STATE))
      {
         evas_object_geometry_get(pd->btn_state, NULL, NULL, &w, NULL);
@@ -1012,16 +1052,16 @@ _btn_clicked_state_save(Ui_Data *pd, Evas_Object *btn)
 }
 
 static void
-_btn_pid_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
+_btn_cmd_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
                     void *event_info EINA_UNUSED)
 {
    Ui_Data *pd = data;
    Ui *ui = pd->ui;
 
-   if (ui->proc.sort_type == PROC_SORT_BY_PID)
+   if (ui->proc.sort_type == PROC_SORT_BY_CMD)
      ui->proc.sort_reverse = !ui->proc.sort_reverse;
-   ui->proc.sort_type = PROC_SORT_BY_PID;
-   _btn_clicked_state_save(pd, pd->btn_pid);
+   ui->proc.sort_type = PROC_SORT_BY_CMD;
+   _btn_clicked_state_save(pd, pd->btn_cmd);
 }
 
 static void
@@ -1038,29 +1078,42 @@ _btn_uid_clicked_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
 }
 
 static void
-_btn_cpu_usage_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
-                          void *event_info EINA_UNUSED)
+_btn_pid_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
+                    void *event_info EINA_UNUSED)
 {
    Ui_Data *pd = data;
    Ui *ui = pd->ui;
 
-   if (ui->proc.sort_type == PROC_SORT_BY_CPU_USAGE)
+   if (ui->proc.sort_type == PROC_SORT_BY_PID)
      ui->proc.sort_reverse = !ui->proc.sort_reverse;
-   ui->proc.sort_type = PROC_SORT_BY_CPU_USAGE;
-   _btn_clicked_state_save(pd, pd->btn_cpu_usage);
+   ui->proc.sort_type = PROC_SORT_BY_PID;
+   _btn_clicked_state_save(pd, pd->btn_pid);
 }
 
 static void
-_btn_size_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
-                     void *event_info EINA_UNUSED)
+_btn_threads_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
+                        void *event_info EINA_UNUSED)
 {
    Ui_Data *pd = data;
    Ui *ui = pd->ui;
 
-   if (ui->proc.sort_type == PROC_SORT_BY_SIZE)
+   if (ui->proc.sort_type == PROC_SORT_BY_THREADS)
      ui->proc.sort_reverse = !ui->proc.sort_reverse;
-   ui->proc.sort_type = PROC_SORT_BY_SIZE;
-   _btn_clicked_state_save(pd, pd->btn_size);
+   ui->proc.sort_type = PROC_SORT_BY_THREADS;
+   _btn_clicked_state_save(pd, pd->btn_threads);
+}
+
+static void
+_btn_cpu_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
+                    void *event_info EINA_UNUSED)
+{
+   Ui_Data *pd = data;
+   Ui *ui = pd->ui;
+
+   if (ui->proc.sort_type == PROC_SORT_BY_CPU)
+     ui->proc.sort_reverse = !ui->proc.sort_reverse;
+   ui->proc.sort_type = PROC_SORT_BY_CPU;
+   _btn_clicked_state_save(pd, pd->btn_cpu);
 }
 
 static void
@@ -1090,55 +1143,68 @@ _btn_nice_clicked_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
 }
 
 static void
-_btn_rss_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
-                    void *event_info EINA_UNUSED)
+_btn_size_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
+                     void *event_info EINA_UNUSED)
 {
    Ui_Data *pd = data;
    Ui *ui = pd->ui;
 
-   if (ui->proc.sort_type == PROC_SORT_BY_RSS)
+   if (ui->proc.sort_type == PROC_SORT_BY_SIZE)
      ui->proc.sort_reverse = !ui->proc.sort_reverse;
-   ui->proc.sort_type = PROC_SORT_BY_RSS;
-   _btn_clicked_state_save(pd, pd->btn_rss);
+   ui->proc.sort_type = PROC_SORT_BY_SIZE;
+   _btn_clicked_state_save(pd, pd->btn_size);
 }
 
 static void
-_btn_cmd_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
+_btn_virt_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
+                     void *event_info EINA_UNUSED)
+{
+   Ui_Data *pd = data;
+   Ui *ui = pd->ui;
+
+   if (ui->proc.sort_type == PROC_SORT_BY_VIRT)
+     ui->proc.sort_reverse = !ui->proc.sort_reverse;
+   ui->proc.sort_type = PROC_SORT_BY_VIRT;
+   _btn_clicked_state_save(pd, pd->btn_virt);
+}
+
+static void
+_btn_rss_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
                     void *event_info EINA_UNUSED)
 {
    Ui_Data *pd = data;
    Ui *ui = pd->ui;
 
-   if (ui->proc.sort_type == PROC_SORT_BY_CMD)
+   if (ui->proc.sort_type == PROC_SORT_BY_RSS)
      ui->proc.sort_reverse = !ui->proc.sort_reverse;
-   ui->proc.sort_type = PROC_SORT_BY_CMD;
-   _btn_clicked_state_save(pd, pd->btn_cmd);
+   ui->proc.sort_type = PROC_SORT_BY_RSS;
+   _btn_clicked_state_save(pd, pd->btn_rss);
 }
 
 static void
-_btn_threads_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
-                        void *event_info EINA_UNUSED)
+_btn_shared_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
+                       void *event_info EINA_UNUSED)
 {
    Ui_Data *pd = data;
    Ui *ui = pd->ui;
 
-   if (ui->proc.sort_type == PROC_SORT_BY_THREADS)
+   if (ui->proc.sort_type == PROC_SORT_BY_SHARED)
      ui->proc.sort_reverse = !ui->proc.sort_reverse;
-   ui->proc.sort_type = PROC_SORT_BY_THREADS;
-   _btn_clicked_state_save(pd, pd->btn_threads);
+   ui->proc.sort_type = PROC_SORT_BY_SHARED;
+   _btn_clicked_state_save(pd, pd->btn_shared);
 }
 
 static void
-_btn_cpu_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
-                    void *event_info EINA_UNUSED)
+_btn_state_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
+                      void *event_info EINA_UNUSED)
 {
    Ui_Data *pd = data;
    Ui *ui = pd->ui;
 
-   if (ui->proc.sort_type == PROC_SORT_BY_CPU)
+   if (ui->proc.sort_type == PROC_SORT_BY_STATE)
      ui->proc.sort_reverse = !ui->proc.sort_reverse;
-   ui->proc.sort_type = PROC_SORT_BY_CPU;
-   _btn_clicked_state_save(pd, pd->btn_cpu);
+   ui->proc.sort_type = PROC_SORT_BY_STATE;
+   _btn_clicked_state_save(pd, pd->btn_state);
 }
 
 static void
@@ -1155,16 +1221,16 @@ _btn_time_clicked_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
 }
 
 static void
-_btn_state_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
-                      void *event_info EINA_UNUSED)
+_btn_cpu_usage_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED,
+                          void *event_info EINA_UNUSED)
 {
    Ui_Data *pd = data;
    Ui *ui = pd->ui;
 
-   if (ui->proc.sort_type == PROC_SORT_BY_STATE)
+   if (ui->proc.sort_type == PROC_SORT_BY_CPU_USAGE)
      ui->proc.sort_reverse = !ui->proc.sort_reverse;
-   ui->proc.sort_type = PROC_SORT_BY_STATE;
-   _btn_clicked_state_save(pd, pd->btn_state);
+   ui->proc.sort_type = PROC_SORT_BY_CPU_USAGE;
+   _btn_clicked_state_save(pd, pd->btn_cpu_usage);
 }
 
 static void
@@ -1575,6 +1641,19 @@ _content_add(Ui_Data *pd, Evas_Object *parent)
                                   _btn_size_clicked_cb, pd);
    _fields[PROC_FIELD_SIZE].btn = btn;
 
+   pd->btn_virt = btn = elm_button_add(parent);
+   _btn_icon_state_init(btn,
+            (ui->proc.sort_type == PROC_SORT_BY_VIRT ?
+            ui->proc.sort_reverse : 0),
+            ui->proc.sort_type == PROC_SORT_BY_VIRT);
+   evas_object_size_hint_weight_set(btn, 1.0, 0);
+   evas_object_size_hint_align_set(btn, FILL, FILL);
+   elm_object_text_set(btn, _("virt"));
+   evas_object_show(btn);
+   evas_object_smart_callback_add(btn, "clicked",
+                                  _btn_virt_clicked_cb, pd);
+   _fields[PROC_FIELD_VIRT].btn = btn;
+
    pd->btn_rss = btn = elm_button_add(parent);
    _btn_icon_state_init(btn,
             (ui->proc.sort_type == PROC_SORT_BY_RSS ?
@@ -1588,6 +1667,19 @@ _content_add(Ui_Data *pd, Evas_Object *parent)
                                   _btn_rss_clicked_cb, pd);
    _fields[PROC_FIELD_RSS].btn = btn;
 
+   pd->btn_shared = btn = elm_button_add(parent);
+   _btn_icon_state_init(btn,
+            (ui->proc.sort_type == PROC_SORT_BY_SHARED ?
+            ui->proc.sort_reverse : 0),
+            ui->proc.sort_type == PROC_SORT_BY_SHARED);
+   evas_object_size_hint_weight_set(btn, 1.0, 0);
+   evas_object_size_hint_align_set(btn, FILL, FILL);
+   elm_object_text_set(btn, _("shr"));
+   evas_object_show(btn);
+   evas_object_smart_callback_add(btn, "clicked",
+                                  _btn_shared_clicked_cb, pd);
+   _fields[PROC_FIELD_SHARED].btn = btn;
+
    pd->btn_state = btn = elm_button_add(parent);
    _btn_icon_state_init(btn,
             (ui->proc.sort_type == PROC_SORT_BY_STATE ?
@@ -1999,7 +2091,9 @@ _init(Ui_Data *pd)
    pd->sorters[PROC_SORT_BY_CPU].sort_cb = proc_sort_by_cpu;
    pd->sorters[PROC_SORT_BY_THREADS].sort_cb = proc_sort_by_threads;
    pd->sorters[PROC_SORT_BY_SIZE].sort_cb = proc_sort_by_size;
+   pd->sorters[PROC_SORT_BY_VIRT].sort_cb = proc_sort_by_virt;
    pd->sorters[PROC_SORT_BY_RSS].sort_cb = proc_sort_by_rss;
+   pd->sorters[PROC_SORT_BY_SHARED].sort_cb = proc_sort_by_shared;
    pd->sorters[PROC_SORT_BY_CMD].sort_cb = proc_sort_by_cmd;
    pd->sorters[PROC_SORT_BY_STATE].sort_cb = proc_sort_by_state;
    pd->sorters[PROC_SORT_BY_TIME].sort_cb = proc_sort_by_time;
diff --git a/src/bin/ui/ui_process_list.h b/src/bin/ui/ui_process_list.h
index 4ba0b5d..ade7eb0 100644
--- a/src/bin/ui/ui_process_list.h
+++ b/src/bin/ui/ui_process_list.h
@@ -14,7 +14,9 @@ typedef enum
    PROC_SORT_BY_PRI,
    PROC_SORT_BY_NICE,
    PROC_SORT_BY_SIZE,
+   PROC_SORT_BY_VIRT,
    PROC_SORT_BY_RSS,
+   PROC_SORT_BY_SHARED,
    PROC_SORT_BY_STATE,
    PROC_SORT_BY_TIME,
    PROC_SORT_BY_CPU_USAGE,
@@ -31,11 +33,13 @@ typedef enum
    PROC_FIELD_PRI       = 6,
    PROC_FIELD_NICE      = 7,
    PROC_FIELD_SIZE      = 8,
-   PROC_FIELD_RSS       = 9,
-   PROC_FIELD_STATE     = 10,
-   PROC_FIELD_TIME      = 11,
-   PROC_FIELD_CPU_USAGE = 12,
-   PROC_FIELD_MAX = 13,
+   PROC_FIELD_VIRT      = 9,
+   PROC_FIELD_RSS       = 10,
+   PROC_FIELD_SHARED    = 11,
+   PROC_FIELD_STATE     = 12,
+   PROC_FIELD_TIME      = 13,
+   PROC_FIELD_CPU_USAGE = 14,
+   PROC_FIELD_MAX = 15,
 } Proc_Field;
 
 void

-- 


Reply via email to