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;
 

-- 


Reply via email to