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 --