From 4a27a4d6366ce2e5e4b7eba3996fd090e2a60890 Mon Sep 17 00:00:00 2001 From: Alastair Poole Date: Sat, 18 Apr 2020 15:01:00 +0100 Subject: [PATCH] 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(-) create mode 100644 data/images/decrease.png create mode 100644 data/images/increase.png diff --git a/data/images/decrease.png b/data/images/decrease.png new file mode 100644 index 0000000000000000000000000000000000000000..7bd4290892f50facc67600589690f1344b8dd0f9 GIT binary patch literal 2601 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 LNkvXXu0mjfgC5=r literal 0 HcmV?d00001 diff --git a/data/images/increase.png b/data/images/increase.png new file mode 100644 index 0000000000000000000000000000000000000000..7700599f8fa538580a85df37be07012f9ce6c6a0 GIT binary patch literal 2739 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 literal 0 HcmV?d00001 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 #include +#include #include #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; }