diff --git a/src/bin/ui/evisum_ui.c b/src/bin/ui/evisum_ui.c index 1c4a1b2..cdb6786 100644 --- a/src/bin/ui/evisum_ui.c +++ b/src/bin/ui/evisum_ui.c @@ -656,6 +656,9 @@ _ui_init_system_probe(Evisum_Ui *ui) #if defined(__FreeBSD__) ui->mem.zfs_mounted = file_system_in_use("ZFS"); #endif +#if !defined(__linux__) + ui->proc.has_wchan = 1; +#endif } void diff --git a/src/bin/ui/evisum_ui.h b/src/bin/ui/evisum_ui.h index 9d8ebe3..b6bffc1 100644 --- a/src/bin/ui/evisum_ui.h +++ b/src/bin/ui/evisum_ui.h @@ -32,6 +32,7 @@ typedef struct _Evisum_Ui Eina_Bool restart; Eina_Bool has_kthreads; + Eina_Bool has_wchan; int poll_delay; int sort_type; diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c index ed9aa63..af196e8 100644 --- a/src/bin/ui/ui_process_list.c +++ b/src/bin/ui/ui_process_list.c @@ -719,9 +719,14 @@ _content_get(void *data, Evas_Object *obj, const char *source) if (_field_enabled(PROC_FIELD_STATE)) { + Evisum_Ui *ui = pd->ui; + evas_object_geometry_get(pd->btn_state, NULL, NULL, &w, NULL); lb = evas_object_data_get(it->obj, "state"); - snprintf(buf, sizeof(buf), "%s", proc->state); + if ((ui->proc.has_wchan) && (proc->state[0] == 's' && proc->state[1] == 'l')) + snprintf(buf, sizeof(buf), "%s", proc->wchan); + else + snprintf(buf, sizeof(buf), "%s", proc->state); if (strcmp(buf, elm_object_text_get(lb))) elm_object_text_set(lb, buf); _field_adjust(pd, PROC_FIELD_STATE, lb, w);