netstar pushed a commit to branch master. http://git.enlightenment.org/apps/evisum.git/commit/?id=dad739383c6007c7a381af40f405ce0e7b53c4d2
commit dad739383c6007c7a381af40f405ce0e7b53c4d2 Author: Alastair Poole <[email protected]> Date: Thu May 14 16:30:29 2020 +0100 ui_process: Handle process termination. --- src/bin/ui/ui_process.c | 25 +++++++++++++++++++++---- src/bin/ui/ui_process.h | 2 ++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/bin/ui/ui_process.c b/src/bin/ui/ui_process.c index 28fbf87..e184139 100644 --- a/src/bin/ui/ui_process.c +++ b/src/bin/ui/ui_process.c @@ -24,6 +24,12 @@ _exe_response(const char *command) return lines; } +static void +_win_title_set(Evas_Object *win, const char *fmt, const char *cmd, int pid) +{ + elm_win_title_set(win, eina_slstr_printf(fmt, cmd, pid)); +} + static Eina_Bool _proc_info_update(void *data) { @@ -40,6 +46,12 @@ _proc_info_update(void *data) proc = proc_info_by_pid(ui->selected_pid); if (!proc) { + if (ui->timer_pid) + ecore_timer_del(ui->timer_pid); + ui->timer_pid = NULL; + + _win_title_set(ui->win, _("%s (%d) - Not running"), ui->selected_cmd, ui->selected_pid); + return ECORE_CALLBACK_CANCEL; } @@ -571,8 +583,11 @@ _win_del_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUS if (ui->timer_pid) ecore_timer_del(ui->timer_pid); + if (ui->selected_cmd) + free(ui->selected_cmd); evas_object_del(win); + free(ui); } void @@ -580,14 +595,16 @@ ui_process_win_add(int pid, const char *cmd) { Evas_Object *win, *ic, *box, *tabs; - win = elm_win_util_standard_add("evisum", eina_slstr_printf("Evisum: %s", cmd)); - ic = elm_icon_add(win); - elm_icon_standard_set(ic, "evisum"); - elm_win_icon_object_set(win, ic); Ui_Process *ui = calloc(1, sizeof(Ui_Process)); ui->selected_pid = pid; + ui->selected_cmd = strdup(cmd); ui->poll_delay = 3.0; + ui->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); box = elm_box_add(win); diff --git a/src/bin/ui/ui_process.h b/src/bin/ui/ui_process.h index bcb277f..10f5b66 100644 --- a/src/bin/ui/ui_process.h +++ b/src/bin/ui/ui_process.h @@ -4,6 +4,7 @@ #include "ui.h" typedef struct _Ui_Process { + Evas_Object *win; Evas_Object *content; Evas_Object *main_view; @@ -27,6 +28,7 @@ typedef struct _Ui_Process { Evas_Object *entry_pid_cpu_usage; int poll_delay; + char *selected_cmd; int selected_pid; int64_t pid_cpu_time; --
