netstar pushed a commit to branch master. http://git.enlightenment.org/apps/evisum.git/commit/?id=0e043e38274c28c08f4ae4bf890fcd4287d618cd
commit 0e043e38274c28c08f4ae4bf890fcd4287d618cd Author: Alastair Poole <nets...@gmail.com> Date: Fri Nov 13 13:15:54 2020 +0000 process_view: Consistent. No need for those widgets to be public --- src/bin/evisum_server.c | 4 - src/bin/ui/ui_process_list.c | 1 + src/bin/ui/ui_process_view.c | 562 ++++++++++++++++++++++++------------------- src/bin/ui/ui_process_view.h | 63 ----- 4 files changed, 314 insertions(+), 316 deletions(-) diff --git a/src/bin/evisum_server.c b/src/bin/evisum_server.c index d53d91b..0f3e1cd 100644 --- a/src/bin/evisum_server.c +++ b/src/bin/evisum_server.c @@ -7,10 +7,6 @@ #include <Ecore_Con.h> #include "evisum_server.h" #include "src/bin/ui/ui.h" -#include "src/bin/ui/ui_cpu.h" -#include "src/bin/ui/ui_memory.h" -#include "src/bin/ui/ui_disk.h" -#include "src/bin/ui/ui_sensors.h" #define LISTEN_SOCKET_NAME "evisum_server" #define WANTED "bonjour monde" diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c index 8e1b1d1..aac0170 100644 --- a/src/bin/ui/ui_process_list.c +++ b/src/bin/ui/ui_process_list.c @@ -1450,6 +1450,7 @@ _system_info_all_poll(void *data, Ecore_Thread *thread) ecore_main_loop_quit(); return; } + if (ecore_thread_check(thread)) return; ecore_thread_feedback(thread, info); for (int i = 0; i < 4 * 1; i++) { diff --git a/src/bin/ui/ui_process_view.c b/src/bin/ui/ui_process_view.c index b8a3952..f3df779 100644 --- a/src/bin/ui/ui_process_view.c +++ b/src/bin/ui/ui_process_view.c @@ -2,7 +2,72 @@ #include "../system/process.h" #include "util.c" -typedef struct { +typedef struct +{ + Evas_Object *win; + Evas_Object *content; + + Evas_Object *btn_main; + Evas_Object *btn_tree; + Evas_Object *btn_info; + Evas_Object *btn_thread; + + Evas_Object *main_view; + Evas_Object *tree_view; + Evas_Object *info_view; + Evas_Object *thread_view; + + Evas_Object *entry_info; + + Evas_Object *genlist_threads; + Evas_Object *genlist_tree; + Evisum_Ui_Cache *cache; + + Evas_Object *entry_pid_cmd; + Evas_Object *entry_pid_cmd_args; + Evas_Object *entry_pid_user; + Evas_Object *entry_pid_pid; + Evas_Object *entry_pid_ppid; + Evas_Object *entry_pid_uid; + Evas_Object *entry_pid_cpu; + Evas_Object *entry_pid_threads; + Evas_Object *entry_pid_virt; + Evas_Object *entry_pid_rss; + Evas_Object *entry_pid_shared; + Evas_Object *entry_pid_size; + Evas_Object *entry_pid_started; + Evas_Object *entry_pid_nice; + Evas_Object *entry_pid_pri; + Evas_Object *entry_pid_state; + Evas_Object *entry_pid_cpu_usage; + Evas_Object *btn_start; + Evas_Object *btn_stop; + Evas_Object *btn_kill; + + 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; + + int poll_delay; + char *selected_cmd; + int selected_pid; + int64_t pid_cpu_time; + Eina_Bool info_init; + Eina_Bool threads_ready; + Eina_Bool sort_reverse; + + int (*sort_cb)(const void *p1, const void *p2); + + Ecore_Timer *timer_pid; + +} Ui_Data; + +typedef struct +{ int tid; char *name; char *state; @@ -52,17 +117,17 @@ static void _item_unrealized_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Ui_Process *ui; + Ui_Data *pd; Evas_Object *o; Eina_List *contents = NULL; - ui = data; + pd = data; elm_genlist_item_all_contents_unset(event_info, &contents); EINA_LIST_FREE(contents, o) { - evisum_ui_item_cache_item_release(ui->cache, o); + evisum_ui_item_cache_item_release(pd->cache, o); } } @@ -124,7 +189,7 @@ _item_create(Evas_Object *parent) static Evas_Object * _content_get(void *data, Evas_Object *obj, const char *source) { - Ui_Process *ui; + Ui_Data *pd; Thread_Info *th; Evas_Object *l, *r; Evas_Coord w; @@ -133,42 +198,42 @@ _content_get(void *data, Evas_Object *obj, const char *source) if (strcmp(source, "elm.swallow.content")) return NULL; if (!th) return NULL; - ui = evas_object_data_get(obj, "ui"); - if (!ui) return NULL; - if (!ui->threads_ready) return NULL; + pd = evas_object_data_get(obj, "ui"); + if (!pd) return NULL; + if (!pd->threads_ready) return NULL; - Item_Cache *it = evisum_ui_item_cache_item_get(ui->cache); + Item_Cache *it = evisum_ui_item_cache_item_get(pd->cache); if (!it) { fprintf(stderr, "Error: Object cache creation failed.\n"); exit(-1); } - evas_object_geometry_get(ui->btn_thread_id, NULL, NULL, &w, NULL); + evas_object_geometry_get(pd->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); + evas_object_geometry_get(pd->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); + evas_object_geometry_get(pd->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); + evas_object_geometry_get(pd->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); + evas_object_geometry_get(pd->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"); @@ -277,17 +342,17 @@ _hash_free_cb(void *data) } static void -_thread_info_set(Ui_Process *ui, Proc_Info *proc) +_thread_info_set(Ui_Data *pd, Proc_Info *proc) { Proc_Info *p; Thread_Info *t; Elm_Object_Item *it; Eina_List *l, *threads = NULL; - if (!ui->hash_cpu_times) - ui->hash_cpu_times = eina_hash_string_superfast_new(_hash_free_cb); + if (!pd->hash_cpu_times) + pd->hash_cpu_times = eina_hash_string_superfast_new(_hash_free_cb); - _genlist_ensure_n_items(ui->genlist_threads, eina_list_count(proc->threads)); + _genlist_ensure_n_items(pd->genlist_threads, eina_list_count(proc->threads)); EINA_LIST_FOREACH(proc->threads, l, p) { @@ -295,16 +360,16 @@ _thread_info_set(Ui_Process *ui, Proc_Info *proc) double cpu_usage = 0.0; const char *key = eina_slstr_printf("%s:%d", p->thread_name, p->tid); - if ((cpu_time_prev = eina_hash_find(ui->hash_cpu_times, key)) == NULL) + if ((cpu_time_prev = eina_hash_find(pd->hash_cpu_times, key)) == NULL) { cpu_time = malloc(sizeof(long)); *cpu_time = p->cpu_time; - eina_hash_add(ui->hash_cpu_times, key, cpu_time); + eina_hash_add(pd->hash_cpu_times, key, cpu_time); } else { cpu_usage = (double) (p->cpu_time - *cpu_time_prev) - / ui->poll_delay; + / pd->poll_delay; *cpu_time_prev = p->cpu_time; } @@ -313,12 +378,12 @@ _thread_info_set(Ui_Process *ui, Proc_Info *proc) threads = eina_list_append(threads, t); } - if (ui->sort_cb) - threads = eina_list_sort(threads, eina_list_count(threads), ui->sort_cb); - if (ui->sort_reverse) + if (pd->sort_cb) + threads = eina_list_sort(threads, eina_list_count(threads), pd->sort_cb); + if (pd->sort_reverse) threads = eina_list_reverse(threads); - it = elm_genlist_first_item_get(ui->genlist_threads); + it = elm_genlist_first_item_get(pd->genlist_threads); EINA_LIST_FREE(threads, t) { @@ -359,11 +424,11 @@ _time_string(int64_t epoch) static void _item_tree_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) { - Ui_Process *ui; + Ui_Data *pd; Elm_Object_Item *it; Proc_Info *proc; - ui = data; + pd = data; it = event_info; elm_genlist_item_selected_set(it, EINA_FALSE); @@ -371,7 +436,7 @@ _item_tree_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info proc = elm_object_item_data_get(it); if (!proc) return; - ui_process_win_add(ui->win, proc->pid, proc->command, 3); + ui_process_win_add(pd->win, proc->pid, proc->command, 3); } static char * @@ -455,24 +520,24 @@ _tree_view_update(void *data) { Eina_List *children, *l; Proc_Info *child; - Ui_Process *ui = data; + Ui_Data *pd = data; - elm_genlist_clear(ui->genlist_tree); + elm_genlist_clear(pd->genlist_tree); - if (ui->selected_pid == 0) return EINA_FALSE; + if (pd->selected_pid == 0) return EINA_FALSE; - children = proc_info_pid_children_get(ui->selected_pid); + children = proc_info_pid_children_get(pd->selected_pid); EINA_LIST_FOREACH(children, l, child) { - if (child->pid == ui->selected_pid) + if (child->pid == pd->selected_pid) { child->children = eina_list_sort(child->children, eina_list_count(child->children), _sort_by_age); - _tree_populate(ui->genlist_tree, NULL, child->children); + _tree_populate(pd->genlist_tree, NULL, child->children); break; } } - elm_genlist_realized_items_update(ui->genlist_tree); + elm_genlist_realized_items_update(pd->genlist_tree); child = eina_list_nth(children, 0); if (child) @@ -484,90 +549,90 @@ _tree_view_update(void *data) static Eina_Bool _proc_info_update(void *data) { - Ui_Process *ui; + Ui_Data *pd; struct passwd *pwd_entry; Proc_Info *proc; double cpu_usage = 0.0; - ui = data; + pd = data; - if (!ui->timer_pid) - ui->timer_pid = ecore_timer_add(ui->poll_delay, _proc_info_update, ui); + if (!pd->timer_pid) + pd->timer_pid = ecore_timer_add(pd->poll_delay, _proc_info_update, pd); - proc = proc_info_by_pid(ui->selected_pid); + proc = proc_info_by_pid(pd->selected_pid); if (!proc) { - if (ui->timer_pid) - ecore_timer_del(ui->timer_pid); - ui->timer_pid = NULL; + if (pd->timer_pid) + ecore_timer_del(pd->timer_pid); + pd->timer_pid = NULL; - _win_title_set(ui->win, _("%s (%d) - Not running"), ui->selected_cmd, - ui->selected_pid); + _win_title_set(pd->win, _("%s (%d) - Not running"), pd->selected_cmd, + pd->selected_pid); - elm_object_disabled_set(ui->btn_start, EINA_TRUE); - elm_object_disabled_set(ui->btn_stop, EINA_TRUE); - elm_object_disabled_set(ui->btn_kill, EINA_TRUE); + elm_object_disabled_set(pd->btn_start, EINA_TRUE); + elm_object_disabled_set(pd->btn_stop, EINA_TRUE); + elm_object_disabled_set(pd->btn_kill, EINA_TRUE); return ECORE_CALLBACK_CANCEL; } if (!strcmp(proc->state, "stop")) { - elm_object_disabled_set(ui->btn_stop, EINA_TRUE); - elm_object_disabled_set(ui->btn_start, EINA_FALSE); + elm_object_disabled_set(pd->btn_stop, EINA_TRUE); + elm_object_disabled_set(pd->btn_start, EINA_FALSE); } else { - elm_object_disabled_set(ui->btn_stop, EINA_FALSE); - elm_object_disabled_set(ui->btn_start, EINA_TRUE); + elm_object_disabled_set(pd->btn_stop, EINA_FALSE); + elm_object_disabled_set(pd->btn_start, EINA_TRUE); } - elm_object_text_set(ui->entry_pid_cmd, proc->command); + elm_object_text_set(pd->entry_pid_cmd, proc->command); pwd_entry = getpwuid(proc->uid); if (pwd_entry) - elm_object_text_set(ui->entry_pid_user, pwd_entry->pw_name); + elm_object_text_set(pd->entry_pid_user, pwd_entry->pw_name); if (proc->arguments) - elm_object_text_set(ui->entry_pid_cmd_args, proc->arguments); + elm_object_text_set(pd->entry_pid_cmd_args, proc->arguments); else - elm_object_text_set(ui->entry_pid_cmd_args, ""); + elm_object_text_set(pd->entry_pid_cmd_args, ""); - elm_object_text_set(ui->entry_pid_pid, eina_slstr_printf("%d", proc->pid)); - elm_object_text_set(ui->entry_pid_uid, eina_slstr_printf("%d", proc->uid)); - elm_object_text_set(ui->entry_pid_cpu, + elm_object_text_set(pd->entry_pid_pid, eina_slstr_printf("%d", proc->pid)); + elm_object_text_set(pd->entry_pid_uid, eina_slstr_printf("%d", proc->uid)); + elm_object_text_set(pd->entry_pid_cpu, eina_slstr_printf("%d", proc->cpu_id)); - elm_object_text_set(ui->entry_pid_ppid, eina_slstr_printf("%d", proc->ppid)); - elm_object_text_set(ui->entry_pid_threads, + elm_object_text_set(pd->entry_pid_ppid, eina_slstr_printf("%d", proc->ppid)); + elm_object_text_set(pd->entry_pid_threads, eina_slstr_printf("%d", proc->numthreads)); - elm_object_text_set(ui->entry_pid_virt, evisum_size_format(proc->mem_virt)); - elm_object_text_set(ui->entry_pid_rss, evisum_size_format(proc->mem_rss)); + elm_object_text_set(pd->entry_pid_virt, evisum_size_format(proc->mem_virt)); + elm_object_text_set(pd->entry_pid_rss, evisum_size_format(proc->mem_rss)); #if !defined(__linux__) - elm_object_text_set(ui->entry_pid_shared, "N/A"); + elm_object_text_set(pd->entry_pid_shared, "N/A"); #else - elm_object_text_set(ui->entry_pid_shared, + elm_object_text_set(pd->entry_pid_shared, evisum_size_format(proc->mem_shared)); #endif - elm_object_text_set(ui->entry_pid_size, evisum_size_format(proc->mem_size)); + elm_object_text_set(pd->entry_pid_size, evisum_size_format(proc->mem_size)); char *t = _time_string(proc->start); if (t) { - elm_object_text_set(ui->entry_pid_started, t); + elm_object_text_set(pd->entry_pid_started, t); free(t); } - elm_object_text_set(ui->entry_pid_nice, eina_slstr_printf("%d", proc->nice)); - elm_object_text_set(ui->entry_pid_pri, + elm_object_text_set(pd->entry_pid_nice, eina_slstr_printf("%d", proc->nice)); + elm_object_text_set(pd->entry_pid_pri, eina_slstr_printf("%d", proc->priority)); - elm_object_text_set(ui->entry_pid_state, proc->state); + elm_object_text_set(pd->entry_pid_state, proc->state); - if (ui->pid_cpu_time && proc->cpu_time >= ui->pid_cpu_time) - cpu_usage = (double)(proc->cpu_time - ui->pid_cpu_time) / ui->poll_delay; + if (pd->pid_cpu_time && proc->cpu_time >= pd->pid_cpu_time) + cpu_usage = (double)(proc->cpu_time - pd->pid_cpu_time) / pd->poll_delay; - elm_object_text_set(ui->entry_pid_cpu_usage, + elm_object_text_set(pd->entry_pid_cpu_usage, eina_slstr_printf("%.1f%%", cpu_usage)); - ui->pid_cpu_time = proc->cpu_time; + pd->pid_cpu_time = proc->cpu_time; - _thread_info_set(ui, proc); + _thread_info_set(pd, proc); proc_info_free(proc); @@ -578,36 +643,36 @@ static void _btn_start_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Ui_Process *ui = data; + Ui_Data *pd = data; - if (ui->selected_pid == -1) + if (pd->selected_pid == -1) return; - kill(ui->selected_pid, SIGCONT); + kill(pd->selected_pid, SIGCONT); } static void _btn_stop_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Ui_Process *ui = data; + Ui_Data *pd = data; - if (ui->selected_pid == -1) + if (pd->selected_pid == -1) return; - kill(ui->selected_pid, SIGSTOP); + kill(pd->selected_pid, SIGSTOP); } static void _btn_kill_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Ui_Process *ui = data; + Ui_Data *pd = data; - if (ui->selected_pid == -1) + if (pd->selected_pid == -1) return; - kill(ui->selected_pid, SIGKILL); + kill(pd->selected_pid, SIGKILL); } static Evas_Object * @@ -636,7 +701,7 @@ _label_add(Evas_Object *parent, const char *text) } static Evas_Object * -_process_tab_add(Evas_Object *parent, Ui_Process *ui) +_process_tab_add(Evas_Object *parent, Ui_Data *pd) { Evas_Object *frame, *hbox, *table; Evas_Object *label, *entry, *button, *border; @@ -664,32 +729,32 @@ _process_tab_add(Evas_Object *parent, Ui_Process *ui) label = _label_add(parent, _("Command:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_cmd = entry = _entry_add(parent); + pd->entry_pid_cmd = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _("Command line:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_cmd_args = entry = _entry_add(parent); + pd->entry_pid_cmd_args = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _("PID:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_pid = entry = _entry_add(parent); + pd->entry_pid_pid = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _("Username:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_user = entry = _entry_add(parent); + pd->entry_pid_user = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _("UID:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_uid = entry = _entry_add(parent); + pd->entry_pid_uid = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _("PPID:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_ppid = entry = _entry_add(parent); + pd->entry_pid_ppid = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); #if defined(__MacOS__) @@ -698,57 +763,57 @@ _process_tab_add(Evas_Object *parent, Ui_Process *ui) label = _label_add(parent, _("CPU #:")); #endif elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_cpu = entry = _entry_add(parent); + pd->entry_pid_cpu = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _("Threads:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_threads = entry = _entry_add(parent); + pd->entry_pid_threads = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _(" Memory :")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_size = entry = _entry_add(parent); + pd->entry_pid_size = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _(" Shared memory:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_shared = entry = _entry_add(parent); + pd->entry_pid_shared = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _(" Resident memory:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_rss = entry = _entry_add(parent); + pd->entry_pid_rss = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _(" Virtual memory:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_virt = entry = _entry_add(parent); + pd->entry_pid_virt = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _(" Start time:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_started = entry = _entry_add(parent); + pd->entry_pid_started = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _("Nice:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_nice = entry = _entry_add(parent); + pd->entry_pid_nice = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _("Priority:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_pri = entry = _entry_add(parent); + pd->entry_pid_pri = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _("State:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_state = entry = _entry_add(parent); + pd->entry_pid_state = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); label = _label_add(parent, _("CPU %:")); elm_table_pack(table, label, 0, i, 1, 1); - ui->entry_pid_cpu_usage = entry = _entry_add(parent); + pd->entry_pid_cpu_usage = entry = _entry_add(parent); elm_table_pack(table, entry, 1, i++, 1, 1); hbox = elm_box_add(parent); @@ -770,9 +835,9 @@ _process_tab_add(Evas_Object *parent, Ui_Process *ui) elm_object_style_set(border, "pad_small"); evas_object_show(border); - button = evisum_ui_tab_add(parent, &ui->btn_stop, _("Stop"), - _btn_stop_clicked_cb, ui); - ui->btn_stop = button; + button = evisum_ui_tab_add(parent, &pd->btn_stop, _("Stop"), + _btn_stop_clicked_cb, pd); + pd->btn_stop = button; elm_object_content_set(border, button); elm_box_pack_end(hbox, border); @@ -781,21 +846,21 @@ _process_tab_add(Evas_Object *parent, Ui_Process *ui) elm_object_style_set(border, "pad_small"); evas_object_show(border); - button = evisum_ui_tab_add(parent, &ui->btn_start, _("Start"), - _btn_start_clicked_cb, ui); - ui->btn_start = button; + button = evisum_ui_tab_add(parent, &pd->btn_start, _("Start"), + _btn_start_clicked_cb, pd); + pd->btn_start = button; elm_object_content_set(border, button); elm_box_pack_end(hbox, border); - evas_object_smart_callback_add(button, "clicked", _btn_start_clicked_cb, ui); + evas_object_smart_callback_add(button, "clicked", _btn_start_clicked_cb, pd); border = elm_frame_add(parent); evas_object_size_hint_align_set(border, FILL, FILL); elm_object_style_set(border, "pad_small"); evas_object_show(border); - button = evisum_ui_tab_add(parent, &ui->btn_kill, _("Kill"), - _btn_kill_clicked_cb, ui); - ui->btn_kill = button; + button = evisum_ui_tab_add(parent, &pd->btn_kill, _("Kill"), + _btn_kill_clicked_cb, pd); + pd->btn_kill = button; elm_object_content_set(border, button); elm_box_pack_end(hbox, border); @@ -822,69 +887,69 @@ static void _btn_name_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Ui_Process *ui = data; + Ui_Data *pd = data; - if (ui->sort_cb == _sort_by_name) - ui->sort_reverse = !ui->sort_reverse; + if (pd->sort_cb == _sort_by_name) + pd->sort_reverse = !pd->sort_reverse; - _btn_icon_state_set(obj, ui->sort_reverse); - ui->sort_cb = _sort_by_name; + _btn_icon_state_set(obj, pd->sort_reverse); + pd->sort_cb = _sort_by_name; } static void _btn_thread_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Ui_Process *ui = data; + Ui_Data *pd = data; - if (ui->sort_cb == _sort_by_tid) - ui->sort_reverse = !ui->sort_reverse; + if (pd->sort_cb == _sort_by_tid) + pd->sort_reverse = !pd->sort_reverse; - _btn_icon_state_set(obj, ui->sort_reverse); - ui->sort_cb = _sort_by_tid; + _btn_icon_state_set(obj, pd->sort_reverse); + pd->sort_cb = _sort_by_tid; } static void _btn_state_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Ui_Process *ui = data; + Ui_Data *pd = data; - if (ui->sort_cb == _sort_by_state) - ui->sort_reverse = !ui->sort_reverse; + if (pd->sort_cb == _sort_by_state) + pd->sort_reverse = !pd->sort_reverse; - _btn_icon_state_set(obj, ui->sort_reverse); - ui->sort_cb = _sort_by_state; + _btn_icon_state_set(obj, pd->sort_reverse); + pd->sort_cb = _sort_by_state; } static void _btn_cpu_id_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Ui_Process *ui = data; + Ui_Data *pd = data; - if (ui->sort_cb == _sort_by_cpu_id) - ui->sort_reverse = !ui->sort_reverse; + if (pd->sort_cb == _sort_by_cpu_id) + pd->sort_reverse = !pd->sort_reverse; - ui->sort_cb = _sort_by_cpu_id; - _btn_icon_state_set(obj, ui->sort_reverse); + pd->sort_cb = _sort_by_cpu_id; + _btn_icon_state_set(obj, pd->sort_reverse); } static void _btn_cpu_usage_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Ui_Process *ui = data; + Ui_Data *pd = data; - if (ui->sort_cb == _sort_by_cpu_usage) - ui->sort_reverse = !ui->sort_reverse; + if (pd->sort_cb == _sort_by_cpu_usage) + pd->sort_reverse = !pd->sort_reverse; - ui->sort_cb = _sort_by_cpu_usage; - _btn_icon_state_set(obj, ui->sort_reverse); + pd->sort_cb = _sort_by_cpu_usage; + _btn_icon_state_set(obj, pd->sort_reverse); } static Evas_Object * -_threads_tab_add(Evas_Object *parent, Ui_Process *ui) +_threads_tab_add(Evas_Object *parent, Ui_Data *pd) { Evas_Object *frame, *box, *hbox, *btn, *genlist; int r, g, b, a; @@ -913,54 +978,54 @@ _threads_tab_add(Evas_Object *parent, Ui_Process *ui) elm_box_homogeneous_set(hbox, EINA_TRUE); evas_object_show(hbox); - ui->btn_thread_id = btn = elm_button_add(hbox); + pd->btn_thread_id = btn = elm_button_add(hbox); evas_object_size_hint_weight_set(btn, EXPAND, EXPAND); evas_object_size_hint_align_set(btn, FILL, FILL); elm_object_text_set(btn, _("ID")); - _btn_icon_state_set(btn, ui->sort_reverse); + _btn_icon_state_set(btn, pd->sort_reverse); evas_object_show(btn); - evas_object_smart_callback_add(btn, "clicked", _btn_thread_clicked_cb, ui); + evas_object_smart_callback_add(btn, "clicked", _btn_thread_clicked_cb, pd); elm_box_pack_end(hbox, btn); - ui->btn_thread_name = btn = elm_button_add(hbox); + pd->btn_thread_name = btn = elm_button_add(hbox); evas_object_size_hint_weight_set(btn, EXPAND, EXPAND); evas_object_size_hint_align_set(btn, FILL, FILL); elm_object_text_set(btn, _("Name")); - _btn_icon_state_set(btn, ui->sort_reverse); + _btn_icon_state_set(btn, pd->sort_reverse); evas_object_show(btn); - evas_object_smart_callback_add(btn, "clicked", _btn_name_clicked_cb, ui); + evas_object_smart_callback_add(btn, "clicked", _btn_name_clicked_cb, pd); elm_box_pack_end(hbox, btn); - ui->btn_thread_state = btn = elm_button_add(hbox); + pd->btn_thread_state = btn = elm_button_add(hbox); evas_object_size_hint_weight_set(btn, EXPAND, EXPAND); evas_object_size_hint_align_set(btn, FILL, FILL); elm_object_text_set(btn, _("State")); - _btn_icon_state_set(btn, ui->sort_reverse); + _btn_icon_state_set(btn, pd->sort_reverse); evas_object_show(btn); - evas_object_smart_callback_add(btn, "clicked", _btn_state_clicked_cb, ui); + evas_object_smart_callback_add(btn, "clicked", _btn_state_clicked_cb, pd); elm_box_pack_end(hbox, btn); - ui->btn_thread_cpu_id = btn = elm_button_add(hbox); + pd->btn_thread_cpu_id = btn = elm_button_add(hbox); evas_object_size_hint_weight_set(btn, EXPAND, EXPAND); evas_object_size_hint_align_set(btn, FILL, FILL); elm_object_text_set(btn, _("CPU ID")); - _btn_icon_state_set(btn, ui->sort_reverse); + _btn_icon_state_set(btn, pd->sort_reverse); evas_object_show(btn); - evas_object_smart_callback_add(btn, "clicked", _btn_cpu_id_clicked_cb, ui); + evas_object_smart_callback_add(btn, "clicked", _btn_cpu_id_clicked_cb, pd); elm_box_pack_end(hbox, btn); - ui->btn_thread_cpu_usage = btn = elm_button_add(hbox); + pd->btn_thread_cpu_usage = btn = elm_button_add(hbox); evas_object_size_hint_weight_set(btn, EXPAND, EXPAND); evas_object_size_hint_align_set(btn, FILL, FILL); elm_object_text_set(btn, _("CPU %")); - _btn_icon_state_set(btn, ui->sort_reverse); + _btn_icon_state_set(btn, pd->sort_reverse); evas_object_show(btn); evas_object_smart_callback_add(btn, "clicked", - _btn_cpu_usage_clicked_cb, ui); + _btn_cpu_usage_clicked_cb, pd); elm_box_pack_end(hbox, btn); - ui->genlist_threads = genlist = elm_genlist_add(parent); - evas_object_data_set(genlist, "ui", ui); + pd->genlist_threads = genlist = elm_genlist_add(parent); + evas_object_data_set(genlist, "ui", pd); elm_object_focus_allow_set(genlist, EINA_FALSE); elm_genlist_homogeneous_set(genlist, EINA_TRUE); elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_NONE); @@ -968,8 +1033,8 @@ _threads_tab_add(Evas_Object *parent, Ui_Process *ui) evas_object_size_hint_align_set(genlist, FILL, FILL); evas_object_show(genlist); - evas_object_smart_callback_add(ui->genlist_threads, "unrealized", - _item_unrealized_cb, ui); + evas_object_smart_callback_add(pd->genlist_threads, "unrealized", + _item_unrealized_cb, pd); elm_box_pack_end(box, hbox); elm_box_pack_end(box, genlist); @@ -978,7 +1043,7 @@ _threads_tab_add(Evas_Object *parent, Ui_Process *ui) } static Evas_Object * -_tree_tab_add(Evas_Object *parent, Ui_Process *ui) +_tree_tab_add(Evas_Object *parent, Ui_Data *pd) { Evas_Object *frame, *box, *genlist; int r, g, b, a; @@ -1000,8 +1065,8 @@ _tree_tab_add(Evas_Object *parent, Ui_Process *ui) evas_object_show(box); elm_object_content_set(frame, box); - ui->genlist_tree = genlist = elm_genlist_add(parent); - evas_object_data_set(genlist, "ui", ui); + pd->genlist_tree = genlist = elm_genlist_add(parent); + evas_object_data_set(genlist, "ui", pd); elm_object_focus_allow_set(genlist, EINA_FALSE); elm_genlist_homogeneous_set(genlist, EINA_TRUE); elm_genlist_select_mode_set(genlist, ELM_OBJECT_SELECT_MODE_DEFAULT); @@ -1009,7 +1074,7 @@ _tree_tab_add(Evas_Object *parent, Ui_Process *ui) evas_object_size_hint_align_set(genlist, FILL, FILL); evas_object_show(genlist); evas_object_smart_callback_add(genlist, "selected", - _item_tree_clicked_cb, ui); + _item_tree_clicked_cb, pd); elm_box_pack_end(box, genlist); @@ -1017,7 +1082,7 @@ _tree_tab_add(Evas_Object *parent, Ui_Process *ui) } static Evas_Object * -_info_tab_add(Evas_Object *parent, Ui_Process *ui) +_info_tab_add(Evas_Object *parent, Ui_Data *pd) { Evas_Object *frame, *box, *entry; int r, g, b, a; @@ -1039,7 +1104,7 @@ _info_tab_add(Evas_Object *parent, Ui_Process *ui) evas_object_show(box); elm_object_content_set(frame, box); - ui->entry_info = entry = elm_entry_add(box); + pd->entry_info = entry = elm_entry_add(box); evas_object_size_hint_weight_set(entry, EXPAND, EXPAND); evas_object_size_hint_align_set(entry, FILL, FILL); elm_entry_single_line_set(entry, EINA_FALSE); @@ -1053,84 +1118,84 @@ _info_tab_add(Evas_Object *parent, Ui_Process *ui) } static void -_hide_all(Ui_Process *ui, Evas_Object *btn) +_hide_all(Ui_Data *pd, Evas_Object *btn) { - elm_object_disabled_set(ui->btn_main, EINA_FALSE); - elm_object_disabled_set(ui->btn_info, EINA_FALSE); - elm_object_disabled_set(ui->btn_thread, EINA_FALSE); - elm_object_disabled_set(ui->btn_tree, EINA_FALSE); + elm_object_disabled_set(pd->btn_main, EINA_FALSE); + elm_object_disabled_set(pd->btn_info, EINA_FALSE); + elm_object_disabled_set(pd->btn_thread, EINA_FALSE); + elm_object_disabled_set(pd->btn_tree, EINA_FALSE); elm_object_disabled_set(btn, EINA_TRUE); - evas_object_hide(ui->main_view); - evas_object_hide(ui->tree_view); - evas_object_hide(ui->info_view); - evas_object_hide(ui->thread_view); + evas_object_hide(pd->main_view); + evas_object_hide(pd->tree_view); + evas_object_hide(pd->info_view); + evas_object_hide(pd->thread_view); } static void _btn_process_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Ui_Process *ui; + Ui_Data *pd; - ui = data; + pd = data; - _hide_all(ui, obj); - evas_object_show(ui->main_view); + _hide_all(pd, obj); + evas_object_show(pd->main_view); } static void _btn_tree_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Ui_Process *ui; + Ui_Data *pd; - ui = data; + pd = data; - _tree_view_update(ui); - _hide_all(ui, obj); - evas_object_show(ui->tree_view); + _tree_view_update(pd); + _hide_all(pd, obj); + evas_object_show(pd->tree_view); } static void _btn_threads_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Ui_Process *ui; + Ui_Data *pd; - ui = data; - ui->threads_ready = EINA_TRUE; + pd = data; + pd->threads_ready = EINA_TRUE; - _hide_all(ui, obj); - evas_object_show(ui->thread_view); + _hide_all(pd, obj); + evas_object_show(pd->thread_view); } static void _btn_info_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { - Ui_Process *ui; + Ui_Data *pd; Eina_List *lines = NULL; - ui = data; + pd = data; - _hide_all(ui, obj); - evas_object_show(ui->info_view); + _hide_all(pd, obj); + evas_object_show(pd->info_view); - if (ui->info_init) return; + if (pd->info_init) return; - if (ui->selected_cmd && ui->selected_cmd[0] && !strchr(ui->selected_cmd, ' ')) - lines =_exe_response(eina_slstr_printf("man %s | col -b", ui->selected_cmd)); + if (pd->selected_cmd && pd->selected_cmd[0] && !strchr(pd->selected_cmd, ' ')) + lines =_exe_response(eina_slstr_printf("man %s | col -b", pd->selected_cmd)); if (!lines) { // LAZY!!! - if (!strcmp(ui->selected_cmd, "evisum")) - elm_object_text_set(ui->entry_info, _evisum_docs()); + if (!strcmp(pd->selected_cmd, "evisum")) + elm_object_text_set(pd->entry_info, _evisum_docs()); else { - elm_object_text_set(ui->entry_info, + elm_object_text_set(pd->entry_info, eina_slstr_printf(_("No documentation found for %s."), - ui->selected_cmd)); + pd->selected_cmd)); } } else @@ -1149,15 +1214,15 @@ _btn_info_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, free(line); } eina_strbuf_append(buf, "</code>"); - elm_object_text_set(ui->entry_info, eina_strbuf_string_get(buf)); + elm_object_text_set(pd->entry_info, eina_strbuf_string_get(buf)); eina_strbuf_free(buf); } - ui->info_init = EINA_TRUE; + pd->info_init = EINA_TRUE; } static Evas_Object * -_tabs_add(Evas_Object *parent, Ui_Process *ui) +_tabs_add(Evas_Object *parent, Ui_Data *pd) { Evas_Object *hbox, *pad, *btn; @@ -1180,9 +1245,9 @@ _tabs_add(Evas_Object *parent, Ui_Process *ui) evas_object_size_hint_align_set(pad, FILL, FILL); evas_object_show(pad); - btn = evisum_ui_tab_add(parent, &ui->btn_main, _("Process"), - _btn_process_clicked_cb, ui); - elm_object_disabled_set(ui->btn_main, EINA_TRUE); + btn = evisum_ui_tab_add(parent, &pd->btn_main, _("Process"), + _btn_process_clicked_cb, pd); + elm_object_disabled_set(pd->btn_main, EINA_TRUE); elm_object_content_set(pad, btn); elm_box_pack_end(hbox, pad); @@ -1192,8 +1257,8 @@ _tabs_add(Evas_Object *parent, Ui_Process *ui) evas_object_size_hint_align_set(pad, FILL, FILL); evas_object_show(pad); - btn = evisum_ui_tab_add(parent, &ui->btn_tree, _("Children"), - _btn_tree_clicked_cb, ui); + btn = evisum_ui_tab_add(parent, &pd->btn_tree, _("Children"), + _btn_tree_clicked_cb, pd); elm_object_content_set(pad, btn); elm_box_pack_end(hbox, pad); @@ -1203,8 +1268,8 @@ _tabs_add(Evas_Object *parent, Ui_Process *ui) evas_object_size_hint_align_set(pad, FILL, FILL); evas_object_show(pad); - btn = evisum_ui_tab_add(parent, &ui->btn_thread, _("Threads"), - _btn_threads_clicked_cb, ui); + btn = evisum_ui_tab_add(parent, &pd->btn_thread, _("Threads"), + _btn_threads_clicked_cb, pd); elm_object_content_set(pad, btn); elm_box_pack_end(hbox, pad); @@ -1214,8 +1279,8 @@ _tabs_add(Evas_Object *parent, Ui_Process *ui) evas_object_size_hint_align_set(pad, FILL, FILL); evas_object_show(pad); - btn = evisum_ui_tab_add(parent, &ui->btn_info, _("Manual"), - _btn_info_clicked_cb, ui); + btn = evisum_ui_tab_add(parent, &pd->btn_info, _("Manual"), + _btn_info_clicked_cb, pd); elm_object_content_set(pad, btn); elm_box_pack_end(hbox, pad); @@ -1234,30 +1299,30 @@ _win_del_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) { Evas_Object *win; - Ui_Process *ui; + Ui_Data *pd; - ui = data; + pd = data; win = obj; - if (ui->hash_cpu_times) - eina_hash_free(ui->hash_cpu_times); - if (ui->timer_pid) - ecore_timer_del(ui->timer_pid); - if (ui->selected_cmd) - free(ui->selected_cmd); - if (ui->cache) - evisum_ui_item_cache_free(ui->cache); + if (pd->hash_cpu_times) + eina_hash_free(pd->hash_cpu_times); + if (pd->timer_pid) + ecore_timer_del(pd->timer_pid); + if (pd->selected_cmd) + free(pd->selected_cmd); + if (pd->cache) + evisum_ui_item_cache_free(pd->cache); evas_object_del(win); - free(ui); + free(pd); } static void _win_resize_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) { - Ui_Process *ui = data; + Ui_Data *pd = data; - elm_genlist_realized_items_update(ui->genlist_threads); + elm_genlist_realized_items_update(pd->genlist_threads); } void @@ -1266,20 +1331,20 @@ ui_process_win_add(Evas_Object *parent_win, int pid, const char *cmd, int poll_d Evas_Object *win, *ic, *box, *tabs; Evas_Coord x, y, w, h; - Ui_Process *ui = calloc(1, sizeof(Ui_Process)); - ui->selected_pid = pid; - ui->selected_cmd = strdup(cmd); - ui->poll_delay = poll_delay; - ui->cache = NULL; - ui->sort_reverse = EINA_TRUE; - ui->sort_cb = _sort_by_cpu_usage; + Ui_Data *pd = calloc(1, sizeof(Ui_Data)); + pd->selected_pid = pid; + pd->selected_cmd = strdup(cmd); + pd->poll_delay = poll_delay; + pd->cache = NULL; + pd->sort_reverse = EINA_TRUE; + pd->sort_cb = _sort_by_cpu_usage; - ui->win = win = elm_win_util_standard_add("evisum", "evisum"); + pd->win = win = elm_win_util_standard_add("evisum", "evisum"); _win_title_set(win, "%s (%d)", cmd, pid); ic = elm_icon_add(win); elm_icon_standard_set(ic, "evisum"); elm_win_icon_object_set(win, ic); - tabs = _tabs_add(win, ui); + tabs = _tabs_add(win, pd); evisum_ui_background_random_add(win, evisum_ui_effects_enabled_get()); @@ -1289,26 +1354,26 @@ ui_process_win_add(Evas_Object *parent_win, int pid, const char *cmd, int poll_d evas_object_show(box); elm_box_pack_end(box, tabs); - ui->content = elm_table_add(box); - evas_object_size_hint_weight_set(ui->content, 0.5, EXPAND); - evas_object_size_hint_align_set(ui->content, FILL, FILL); - evas_object_show(ui->content); + pd->content = elm_table_add(box); + evas_object_size_hint_weight_set(pd->content, 0.5, EXPAND); + evas_object_size_hint_align_set(pd->content, FILL, FILL); + evas_object_show(pd->content); - ui->main_view = _process_tab_add(win, ui); - ui->tree_view = _tree_tab_add(win, ui); - ui->thread_view = _threads_tab_add(win, ui); - ui->info_view = _info_tab_add(win, ui); + pd->main_view = _process_tab_add(win, pd); + pd->tree_view = _tree_tab_add(win, pd); + pd->thread_view = _threads_tab_add(win, pd); + pd->info_view = _info_tab_add(win, pd); - elm_table_pack(ui->content, ui->info_view, 0, 0, 1, 1); - elm_table_pack(ui->content, ui->tree_view, 0, 0, 1, 1); - elm_table_pack(ui->content, ui->main_view, 0, 0, 1, 1); - elm_table_pack(ui->content, ui->thread_view, 0, 0, 1, 1); + elm_table_pack(pd->content, pd->info_view, 0, 0, 1, 1); + elm_table_pack(pd->content, pd->tree_view, 0, 0, 1, 1); + elm_table_pack(pd->content, pd->main_view, 0, 0, 1, 1); + elm_table_pack(pd->content, pd->thread_view, 0, 0, 1, 1); - elm_box_pack_end(box, ui->content); + elm_box_pack_end(box, pd->content); elm_object_content_set(win, box); - evas_object_smart_callback_add(win, "delete,request", _win_del_cb, ui); + evas_object_smart_callback_add(win, "delete,request", _win_del_cb, pd); evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, - _win_resize_cb, ui); + _win_resize_cb, pd); evas_object_resize(win, 480 * elm_config_scale_get(), -1); if (parent_win) @@ -1320,9 +1385,8 @@ ui_process_win_add(Evas_Object *parent_win, int pid, const char *cmd, int poll_d evas_object_show(win); - ui->cache = evisum_ui_item_cache_new(ui->genlist_threads, _item_create, 10); + pd->cache = evisum_ui_item_cache_new(pd->genlist_threads, _item_create, 10); - _proc_info_update(ui); - _tree_view_update(ui); + _proc_info_update(pd); } diff --git a/src/bin/ui/ui_process_view.h b/src/bin/ui/ui_process_view.h index 606e8a3..c2252e5 100644 --- a/src/bin/ui/ui_process_view.h +++ b/src/bin/ui/ui_process_view.h @@ -2,69 +2,6 @@ #define __UI_PROCESS_H__ #include "ui.h" -#include "ui_cache.h" - -typedef struct _Ui_Process { - Evas_Object *win; - Evas_Object *content; - - Evas_Object *btn_main; - Evas_Object *btn_tree; - Evas_Object *btn_info; - Evas_Object *btn_thread; - - Evas_Object *main_view; - Evas_Object *tree_view; - Evas_Object *info_view; - Evas_Object *thread_view; - - Evas_Object *entry_info; - - Evas_Object *genlist_threads; - Evas_Object *genlist_tree; - Evisum_Ui_Cache *cache; - - Evas_Object *entry_pid_cmd; - Evas_Object *entry_pid_cmd_args; - Evas_Object *entry_pid_user; - Evas_Object *entry_pid_pid; - Evas_Object *entry_pid_ppid; - Evas_Object *entry_pid_uid; - Evas_Object *entry_pid_cpu; - Evas_Object *entry_pid_threads; - Evas_Object *entry_pid_virt; - Evas_Object *entry_pid_rss; - Evas_Object *entry_pid_shared; - Evas_Object *entry_pid_size; - Evas_Object *entry_pid_started; - Evas_Object *entry_pid_nice; - Evas_Object *entry_pid_pri; - Evas_Object *entry_pid_state; - Evas_Object *entry_pid_cpu_usage; - Evas_Object *btn_start; - Evas_Object *btn_stop; - Evas_Object *btn_kill; - - 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; - - int poll_delay; - char *selected_cmd; - int selected_pid; - int64_t pid_cpu_time; - Eina_Bool info_init; - Eina_Bool threads_ready; - Eina_Bool sort_reverse; - - int (*sort_cb)(const void *p1, const void *p2); - - Ecore_Timer *timer_pid; -} Ui_Process; void ui_process_win_add(Evas_Object *parent_win, int pid, const char *cmd, int poll_delay); --