netstar pushed a commit to branch master. http://git.enlightenment.org/apps/evisum.git/commit/?id=263245eea72b4f22ca31a4fac4396c6597a5c7ef
commit 263245eea72b4f22ca31a4fac4396c6597a5c7ef Author: Alastair Poole <[email protected]> Date: Thu May 14 17:35:57 2020 +0100 ui_process: make this more responsive. --- src/bin/ui/ui_process.c | 52 +++++++++++++++++++++++++++---------------------- src/bin/ui/ui_process.h | 3 +++ 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/src/bin/ui/ui_process.c b/src/bin/ui/ui_process.c index 0feb56a..dd82655 100644 --- a/src/bin/ui/ui_process.c +++ b/src/bin/ui/ui_process.c @@ -14,9 +14,12 @@ _exe_response(const char *command) lines = NULL; + int n = 1; while ((fgets(buf, sizeof(buf), p)) != NULL) { - lines = eina_list_append(lines, elm_entry_markup_to_utf8(buf)); + if (n > 1) + lines = eina_list_append(lines, elm_entry_markup_to_utf8(buf)); + n++; } pclose(p); @@ -460,7 +463,7 @@ _threads_tab_add(Evas_Object *parent) static Evas_Object * -_info_tab_add(Evas_Object *parent, const char *cmd) +_info_tab_add(Evas_Object *parent, Ui_Process *ui) { Evas_Object *box, *entry; @@ -468,7 +471,7 @@ _info_tab_add(Evas_Object *parent, const char *cmd) 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); - entry = elm_entry_add(box); + ui->entry_info = entry = elm_entry_add(box); evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_entry_single_line_set(entry, EINA_FALSE); @@ -476,25 +479,6 @@ _info_tab_add(Evas_Object *parent, const char *cmd) elm_entry_editable_set(entry, EINA_FALSE); elm_entry_scrollable_set(entry, EINA_TRUE); evas_object_show(entry); - - Eina_List *lines = _exe_response(eina_slstr_printf("man %s | col -b", cmd)); - if (lines) - { - Eina_Strbuf *buf = eina_strbuf_new(); - eina_strbuf_append(buf, "<code>"); - char *line; - EINA_LIST_FREE(lines, line) - { - eina_strbuf_append_printf(buf, "%s<br>", line); - free(line); - } - - eina_list_free(lines); - eina_strbuf_append(buf, "</code>"); - elm_object_text_set(entry, eina_strbuf_string_get(buf)); - eina_strbuf_free(buf); - } - elm_box_pack_end(box, entry); return box; @@ -543,6 +527,28 @@ _btn_info_clicked_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info _hide_all(ui, obj); evas_object_show(ui->info_view); + + if (ui->info_init) return; + + Eina_List *lines = _exe_response(eina_slstr_printf("man %s | col -b", ui->selected_cmd)); + if (lines) + { + Eina_Strbuf *buf = eina_strbuf_new(); + eina_strbuf_append(buf, "<code>"); + + char *line; + EINA_LIST_FREE(lines, line) + { + eina_strbuf_append_printf(buf, "%s<br>", line); + free(line); + } + + eina_list_free(lines); + eina_strbuf_append(buf, "</code>"); + elm_object_text_set(ui->entry_info, eina_strbuf_string_get(buf)); + eina_strbuf_free(buf); + } + ui->info_init = EINA_TRUE; } static Evas_Object * @@ -634,7 +640,7 @@ ui_process_win_add(int pid, const char *cmd) ui->main_view = _process_tab_add(win, ui); ui->thread_view = _threads_tab_add(win); - ui->info_view = _info_tab_add(win, cmd); + ui->info_view = _info_tab_add(win, ui); elm_table_pack(ui->content, ui->info_view, 0, 0, 1, 1); elm_table_pack(ui->content, ui->main_view, 0, 0, 1, 1); diff --git a/src/bin/ui/ui_process.h b/src/bin/ui/ui_process.h index 65b0152..3f008ea 100644 --- a/src/bin/ui/ui_process.h +++ b/src/bin/ui/ui_process.h @@ -15,6 +15,8 @@ typedef struct _Ui_Process { Evas_Object *btn_info; Evas_Object *btn_thread; + Evas_Object *entry_info; + Evas_Object *entry_pid_cmd; Evas_Object *entry_pid_cmd_args; Evas_Object *entry_pid_user; @@ -35,6 +37,7 @@ typedef struct _Ui_Process { char *selected_cmd; int selected_pid; int64_t pid_cpu_time; + Eina_Bool info_init; Ecore_Timer *timer_pid; } Ui_Process; --
