From 0aea127f8ec3aa8f9ce91163599219986e4d87fc Mon Sep 17 00:00:00 2001 From: Alastair Poole Date: Sun, 17 May 2020 16:33:27 +0100 Subject: [PATCH] process_view: Small Changes --- src/bin/meson.build | 8 +- src/bin/ui/meson.build | 4 +- src/bin/ui/ui.c | 2 +- .../ui/{ui_process.c => ui_process_view.c} | 91 ++++++++++++++----- .../ui/{ui_process.h => ui_process_view.h} | 7 ++ 5 files changed, 80 insertions(+), 32 deletions(-) rename src/bin/ui/{ui_process.c => ui_process_view.c} (89%) rename src/bin/ui/{ui_process.h => ui_process_view.h} (85%) diff --git a/src/bin/meson.build b/src/bin/meson.build index 526ca2d..c86ddd7 100644 --- a/src/bin/meson.build +++ b/src/bin/meson.build @@ -12,10 +12,10 @@ src += files([ ]) executable('evisum', src, - include_directories : inc, - dependencies : [ deps, deps_os, deps_nls ], - gui_app : true, - install : true) + include_directories : inc, + dependencies : [ deps, deps_os, deps_nls ], + gui_app : true, + install : true) if host_os == 'freebsd' or host_os == 'dragonfly' meson.add_install_script('perms.sh') diff --git a/src/bin/ui/meson.build b/src/bin/ui/meson.build index 6cda90e..7445263 100644 --- a/src/bin/ui/meson.build +++ b/src/bin/ui/meson.build @@ -10,6 +10,6 @@ src += files([ 'ui_memory.c', 'ui_cpu.c', 'ui_cpu.h', - 'ui_process.c', - 'ui_process.h', + 'ui_process_view.c', + 'ui_process_view.h', ]) diff --git a/src/bin/ui/ui.c b/src/bin/ui/ui.c index 4586dd7..8956e82 100644 --- a/src/bin/ui/ui.c +++ b/src/bin/ui/ui.c @@ -4,7 +4,7 @@ #include "ui/ui_misc.h" #include "ui/ui_memory.h" #include "ui/ui_cpu.h" -#include "ui/ui_process.h" +#include "ui/ui_process_view.h" #include #include diff --git a/src/bin/ui/ui_process.c b/src/bin/ui/ui_process_view.c similarity index 89% rename from src/bin/ui/ui_process.c rename to src/bin/ui/ui_process_view.c index ef2ec90..d2e4bda 100644 --- a/src/bin/ui/ui_process.c +++ b/src/bin/ui/ui_process_view.c @@ -1,4 +1,4 @@ -#include "ui_process.h" +#include "ui_process_view.h" #include "../system/process.h" Eina_List * @@ -89,45 +89,42 @@ _item_del(void *data, Evas_Object *obj EINA_UNUSED) static Evas_Object * _item_column_add(Evas_Object *table, const char *text, int col) { - Evas_Object *rect, *hbox, *label; - - hbox = elm_box_add(table); - evas_object_size_hint_align_set(hbox, 0.0, EVAS_HINT_EXPAND); - evas_object_size_hint_weight_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL); - elm_box_horizontal_set(hbox, EINA_TRUE); - evas_object_show(hbox); + Evas_Object *rect, *label; label = elm_label_add(table); evas_object_size_hint_align_set(label, 0.0, EVAS_HINT_EXPAND); - evas_object_size_hint_weight_set(label, 0.5, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_data_set(table, text, label); evas_object_show(label); - elm_box_pack_end(hbox, label); rect = evas_object_rectangle_add(table); evas_object_data_set(label, "rect", rect); - elm_table_pack(table, hbox, col, 0, 1, 1); + elm_table_pack(table, label, col, 0, 1, 1); elm_table_pack(table, rect, col, 0, 1, 1); - return table; + return label; } static Evas_Object * _item_create(Evas_Object *parent) { - Evas_Object *table; + Evas_Object *table, *label; table = elm_table_add(parent); evas_object_size_hint_align_set(table, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(table, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_show(table); - _item_column_add(table, "tid", 0); + label = _item_column_add(table, "tid", 0); + evas_object_size_hint_align_set(label, 0.5, EVAS_HINT_EXPAND); _item_column_add(table, "name", 1); - _item_column_add(table, "state", 2); - _item_column_add(table, "cpu_id", 3); - _item_column_add(table, "cpu_usage", 4); + label = _item_column_add(table, "state", 2); + evas_object_size_hint_align_set(label, 0.5, EVAS_HINT_EXPAND); + label = _item_column_add(table, "cpu_id", 3); + evas_object_size_hint_align_set(label, 0.5, EVAS_HINT_EXPAND); + + label = _item_column_add(table, "cpu_usage", 4); return table; } @@ -186,6 +183,7 @@ _content_get(void *data, Evas_Object *obj, const char *source) if (!th) return NULL; ui = evas_object_data_get(obj, "ui"); if (!ui) return NULL; + if (!ui->threads_ready) return NULL; Item_Cache *it = _cache_get(ui); if (!it) @@ -194,30 +192,31 @@ _content_get(void *data, Evas_Object *obj, const char *source) exit(-1); } - evas_object_geometry_get(ui->win, NULL, NULL, &w, NULL); - - w = w / 6; - + evas_object_geometry_get(ui->btn_thread_id, NULL, NULL, &w, NULL); l = evas_object_data_get(it->obj, "tid"); elm_object_text_set(l, eina_slstr_printf("%d", th->tid)); r = evas_object_data_get(l, "rect"); evas_object_size_hint_min_set(r, w, 1); + evas_object_geometry_get(ui->btn_thread_name, NULL, NULL, &w, NULL); l = evas_object_data_get(it->obj, "name"); elm_object_text_set(l, eina_slstr_printf("%s", th->name)); r = evas_object_data_get(l, "rect"); evas_object_size_hint_min_set(r, w, 1); + evas_object_geometry_get(ui->btn_thread_state, NULL, NULL, &w, NULL); l = evas_object_data_get(it->obj, "state"); elm_object_text_set(l, eina_slstr_printf("%s", th->state)); r = evas_object_data_get(l, "rect"); evas_object_size_hint_min_set(r, w, 1); + evas_object_geometry_get(ui->btn_thread_cpu_id, NULL, NULL, &w, NULL); l = evas_object_data_get(it->obj, "cpu_id"); elm_object_text_set(l, eina_slstr_printf("%d", th->cpu_id)); r = evas_object_data_get(l, "rect"); evas_object_size_hint_min_set(r, w, 1); + evas_object_geometry_get(ui->btn_thread_cpu_usage, NULL, NULL, &w, NULL); l = evas_object_data_get(it->obj, "cpu_usage"); elm_object_text_set(l, eina_slstr_printf("%1.1f%%", th->cpu_usage)); r = evas_object_data_get(l, "rect"); @@ -607,12 +606,54 @@ _process_tab_add(Evas_Object *parent, Ui_Process *ui) static Evas_Object * _threads_tab_add(Evas_Object *parent, Ui_Process *ui) { - Evas_Object *box, *genlist; + Evas_Object *box, *hbox, *btn, *genlist; box = elm_box_add(parent); evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); + hbox = elm_box_add(box); + evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, 0); + evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_horizontal_set(hbox, EINA_TRUE); + elm_box_homogeneous_set(hbox, EINA_TRUE); + evas_object_show(hbox); + + ui->btn_thread_id = btn = elm_button_add(hbox); + evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_text_set(btn, _("ID")); + evas_object_show(btn); + elm_box_pack_end(hbox, btn); + + ui->btn_thread_name = btn = elm_button_add(hbox); + evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_text_set(btn, _("Name")); + evas_object_show(btn); + elm_box_pack_end(hbox, btn); + + ui->btn_thread_state = btn = elm_button_add(hbox); + evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_text_set(btn, _("State")); + evas_object_show(btn); + elm_box_pack_end(hbox, btn); + + ui->btn_thread_cpu_id = btn = elm_button_add(hbox); + evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_text_set(btn, _("CPU ID")); + evas_object_show(btn); + elm_box_pack_end(hbox, btn); + + ui->btn_thread_cpu_usage = btn = elm_button_add(hbox); + evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_object_text_set(btn, _("CPU Usage")); + evas_object_show(btn); + elm_box_pack_end(hbox, btn); + ui->genlist_threads = genlist = elm_genlist_add(parent); evas_object_data_set(genlist, "ui", ui); elm_object_focus_allow_set(genlist, EINA_FALSE); @@ -623,6 +664,7 @@ _threads_tab_add(Evas_Object *parent, Ui_Process *ui) evas_object_smart_callback_add(ui->genlist_threads, "unrealized", _item_unrealized_cb, ui); + elm_box_pack_end(box, hbox); elm_box_pack_end(box, genlist); return box; @@ -679,6 +721,7 @@ _btn_threads_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_in Ui_Process *ui; ui = data; + ui->threads_ready = EINA_TRUE; _hide_all(ui, obj); evas_object_show(ui->thread_view); @@ -800,6 +843,7 @@ ui_process_win_add(int pid, const char *cmd) ui->selected_pid = pid; ui->selected_cmd = strdup(cmd); ui->poll_delay = 3.0; + ui->item_cache = NULL; ui->win = win = elm_win_util_standard_add("evisum", "evisum"); _win_title_set(win, "%s (%d)", cmd, pid); @@ -835,10 +879,7 @@ ui_process_win_add(int pid, const char *cmd) evas_object_resize(win, 540 * elm_config_scale_get(), 480 * elm_config_scale_get()); evas_object_show(win); - ui->item_cache = NULL; - _cache_init(ui); - _proc_info_update(ui); } diff --git a/src/bin/ui/ui_process.h b/src/bin/ui/ui_process_view.h similarity index 85% rename from src/bin/ui/ui_process.h rename to src/bin/ui/ui_process_view.h index ab17703..b86d5b0 100644 --- a/src/bin/ui/ui_process.h +++ b/src/bin/ui/ui_process_view.h @@ -34,6 +34,12 @@ typedef struct _Ui_Process { Evas_Object *entry_pid_state; Evas_Object *entry_pid_cpu_usage; + Evas_Object *btn_thread_id; + Evas_Object *btn_thread_name; + Evas_Object *btn_thread_state; + Evas_Object *btn_thread_cpu_id; + Evas_Object *btn_thread_cpu_usage; + Eina_Hash *hash_cpu_times; Eina_List *item_cache; @@ -43,6 +49,7 @@ typedef struct _Ui_Process { int selected_pid; int64_t pid_cpu_time; Eina_Bool info_init; + Eina_Bool threads_ready; Ecore_Timer *timer_pid; } Ui_Process;