netstar pushed a commit to branch master.

http://git.enlightenment.org/apps/evisum.git/commit/?id=4a27a4d6366ce2e5e4b7eba3996fd090e2a60890

commit 4a27a4d6366ce2e5e4b7eba3996fd090e2a60890
Author: Alastair Poole <[email protected]>
Date:   Sat Apr 18 15:01:00 2020 +0100

    ui: Add Priority
---
 data/images/decrease.png | Bin 0 -> 2601 bytes
 data/images/increase.png | Bin 0 -> 2739 bytes
 data/images/meson.build  |   1 +
 src/bin/process.c        |   2 +-
 src/bin/ui.c             |  46 +++++++++++++++++++++++++++++++++++++++++++++-
 5 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/data/images/decrease.png b/data/images/decrease.png
new file mode 100644
index 0000000..7bd4290
Binary files /dev/null and b/data/images/decrease.png differ
diff --git a/data/images/increase.png b/data/images/increase.png
new file mode 100644
index 0000000..7700599
Binary files /dev/null and b/data/images/increase.png differ
diff --git a/data/images/meson.build b/data/images/meson.build
index 9bb8d75..e936d31 100644
--- a/data/images/meson.build
+++ b/data/images/meson.build
@@ -2,4 +2,5 @@ install_data('go-up.png', 'go-down.png',
              'battery.png', 'network.png',
              'window.png', 'start.png', 'stop.png',
              'kill.png', 'cancel.png',
+             'increase.png', 'decrease.png',
              install_dir: join_paths(dir_data, 'evisum/images'))
diff --git a/src/bin/process.c b/src/bin/process.c
index 1416e39..a6b3090 100644
--- a/src/bin/process.c
+++ b/src/bin/process.c
@@ -624,7 +624,7 @@ proc_info_by_pid(int pid)
    p->state = _process_state_name(kp.ki_stat);
    p->mem_size = kp.ki_size;
    p->mem_rss = kp.ki_rssize * pagesize;
-   p->nice = kp.ki_nice = NZERO;
+   p->nice = kp.ki_nice - NZERO;
    p->priority = kp.ki_pri.pri_level - PZERO;
    p->numthreads = kp.ki_numthreads;
 
diff --git a/src/bin/ui.c b/src/bin/ui.c
index 6da85d5..1997e22 100644
--- a/src/bin/ui.c
+++ b/src/bin/ui.c
@@ -6,6 +6,7 @@
 #include "disks.h"
 #include <stdio.h>
 #include <sys/types.h>
+#include <sys/resource.h>
 #include <pwd.h>
 
 #if defined(__APPLE__) && defined(__MACH__)
@@ -1560,6 +1561,44 @@ _item_menu_kill_cb(void *data, Evas_Object *obj 
EINA_UNUSED, void *event_info EI
    kill(proc->pid, SIGKILL);
 }
 
+static void
+_item_menu_cancel_cb(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
+{
+   Evas_Object *menu = data;
+
+   elm_menu_close(menu);
+}
+
+static void
+_item_menu_priority_increase_cb(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
+{
+   Proc_Info *proc = data;
+   if (!proc) return;
+
+   setpriority(PRIO_PROCESS, proc->pid, proc->nice - 1);
+}
+
+static void
+_item_menu_priority_decrease_cb(void *data, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSED)
+{
+   Proc_Info *proc = data;
+   if (!proc) return;
+
+   setpriority(PRIO_PROCESS, proc->pid, proc->nice + 1);
+}
+
+static void
+_item_menu_priority_add(Evas_Object *menu, Elm_Object_Item *menu_it, Proc_Info 
*proc)
+{
+   Elm_Object_Item *it;
+
+   it = elm_menu_item_add(menu, menu_it, _icon_path_get("window"), 
eina_slstr_printf("%d", proc->nice), NULL, NULL);
+   elm_menu_item_separator_add(menu, menu_it);
+   elm_menu_item_add(menu, menu_it, _icon_path_get("increase"), "Increase", 
_item_menu_priority_increase_cb, proc);
+   elm_menu_item_add(menu, menu_it, _icon_path_get("decrease"), "Decrease", 
_item_menu_priority_decrease_cb, proc);
+   elm_object_item_disabled_set(it, EINA_TRUE);
+}
+
 static
 Evas_Object *
 _item_menu_create(Ui *ui, Proc_Info *proc)
@@ -1577,13 +1616,18 @@ _item_menu_create(Ui *ui, Proc_Info *proc)
    stopped = !!strcmp(proc->state, "stop");
 
    menu_it = elm_menu_item_add(menu, NULL, _icon_path_get("window"), 
proc->command, NULL, NULL);
+
+   menu_it2 = elm_menu_item_add(menu, menu_it, _icon_path_get("window"), 
"Priority", NULL, NULL);
+   _item_menu_priority_add(menu, menu_it2, proc);
+
+   elm_menu_item_separator_add(menu, menu_it);
    menu_it2 = elm_menu_item_add(menu, menu_it, _icon_path_get("start"), 
"Start", _item_menu_start_cb, proc);
    if (stopped) elm_object_item_disabled_set(menu_it2, EINA_TRUE);
    menu_it2 = elm_menu_item_add(menu, menu_it, _icon_path_get("stop"), "Stop", 
_item_menu_stop_cb, proc);
    if (!stopped) elm_object_item_disabled_set(menu_it2, EINA_TRUE);
    elm_menu_item_add(menu, menu_it, _icon_path_get("kill"), "Kill", 
_item_menu_kill_cb, proc);
    elm_menu_item_separator_add(menu, menu_it);
-   elm_menu_item_add(menu, menu_it, _icon_path_get("cancel"), "Cancel", 
_item_menu_dismissed_cb, NULL);
+   elm_menu_item_add(menu, menu_it, _icon_path_get("cancel"), "Cancel", 
_item_menu_cancel_cb, menu);
 
    return menu;
 }

-- 


Reply via email to