diff --git a/meson.build b/meson.build index b6752e3..d98b80d 100644 --- a/meson.build +++ b/meson.build @@ -1,6 +1,6 @@ ##### Project project('evisum', 'c', - version : '0.5.0-alpha', + version : '0.5.0-alpha', meson_version : '>= 0.40.0') efl_version = '>= 1.22.0' diff --git a/src/bin/ui/ui.c b/src/bin/ui/ui.c index 6493e96..e2b8029 100644 --- a/src/bin/ui/ui.c +++ b/src/bin/ui/ui.c @@ -520,6 +520,7 @@ _process_list_feedback_cb(void *data, Ecore_Thread *thread EINA_UNUSED, Eina_List *list, *l, *l_next; Proc_Info *proc; Elm_Object_Item *it; + int len = 0; ui = data; @@ -527,11 +528,15 @@ _process_list_feedback_cb(void *data, Ecore_Thread *thread EINA_UNUSED, list = proc_info_all_get(); + if (ui->search_text && ui->search_text[0]) + { + len = strlen(ui->search_text); + } + EINA_LIST_FOREACH_SAFE(list, l, l_next, proc) { - if ((ui->search_text && ui->search_text[0] && - strncasecmp(proc->command, ui->search_text, strlen(ui->search_text)) - ) || (!ui->show_self && proc->pid == ui->program_pid)) + if (((len && (strncasecmp(proc->command, ui->search_text, len))) || + (!ui->show_self && (proc->pid == ui->program_pid)))) { proc_info_free(proc); list = eina_list_remove_list(list, l); @@ -571,8 +576,6 @@ _process_list_update(Ui *ui) _process_list_feedback_cb(ui, NULL, NULL); } -#define POLL_ONE_SEC 4 - static void _process_list(void *data, Ecore_Thread *thread) { @@ -584,7 +587,7 @@ _process_list(void *data, Ecore_Thread *thread) while (1) { ecore_thread_feedback(thread, ui); - for (int i = 0; i < delay * POLL_ONE_SEC; i++) + for (int i = 0; i < delay * 4; i++) { if (ecore_thread_check(thread)) return; @@ -1315,7 +1318,8 @@ _ui_tabs_add(Evas_Object *parent, Ui *ui) elm_object_disabled_set(ui->btn_general, EINA_TRUE); evas_object_size_hint_weight_set(button, EXPAND, EXPAND); evas_object_size_hint_align_set(button, FILL, FILL); - evas_object_size_hint_min_set(button, elm_config_scale_get() * TAB_BTN_SIZE, 0); + evas_object_size_hint_min_set(button, + elm_config_scale_get() * TAB_BTN_SIZE, 0); elm_object_text_set(button, _("General")); evas_object_show(button); elm_object_content_set(border, button); @@ -1332,7 +1336,8 @@ _ui_tabs_add(Evas_Object *parent, Ui *ui) ui->btn_cpu = button = elm_button_add(hbox); evas_object_size_hint_weight_set(button, EXPAND, EXPAND); evas_object_size_hint_align_set(button, FILL, FILL); - evas_object_size_hint_min_set(button, elm_config_scale_get() * TAB_BTN_SIZE, 0); + evas_object_size_hint_min_set(button, + elm_config_scale_get() * TAB_BTN_SIZE, 0); elm_object_text_set(button, _("CPU")); elm_object_content_set(border, button); evas_object_show(button); @@ -1349,7 +1354,8 @@ _ui_tabs_add(Evas_Object *parent, Ui *ui) ui->btn_mem = button = elm_button_add(hbox); evas_object_size_hint_weight_set(button, EXPAND, EXPAND); evas_object_size_hint_align_set(button, FILL, FILL); - evas_object_size_hint_min_set(button, elm_config_scale_get() * TAB_BTN_SIZE, 0); + evas_object_size_hint_min_set(button, + elm_config_scale_get() * TAB_BTN_SIZE, 0); elm_object_text_set(button, _("Memory")); evas_object_show(button); elm_object_content_set(border, button); @@ -1366,7 +1372,8 @@ _ui_tabs_add(Evas_Object *parent, Ui *ui) ui->btn_storage = button = elm_button_add(hbox); evas_object_size_hint_weight_set(button, EXPAND, EXPAND); evas_object_size_hint_align_set(button, FILL, FILL); - evas_object_size_hint_min_set(button, elm_config_scale_get() * TAB_BTN_SIZE, 0); + evas_object_size_hint_min_set(button, + elm_config_scale_get() * TAB_BTN_SIZE, 0); elm_object_text_set(button, _("Storage")); evas_object_show(button); elm_object_content_set(border, button); @@ -1383,7 +1390,8 @@ _ui_tabs_add(Evas_Object *parent, Ui *ui) ui->btn_misc = button = elm_button_add(hbox); evas_object_size_hint_weight_set(button, FILL, EXPAND); evas_object_size_hint_align_set(button, FILL, FILL); - evas_object_size_hint_min_set(button, elm_config_scale_get() * TAB_BTN_SIZE, 0); + evas_object_size_hint_min_set(button, + elm_config_scale_get() * TAB_BTN_SIZE, 0); elm_object_text_set(button, _("Misc")); evas_object_show(button); elm_object_content_set(border, button); @@ -1674,18 +1682,16 @@ out: static void _ui_launch(Ui *ui) { - Ecore_Thread *thr; - _process_list_update(ui); - thr = ecore_thread_feedback_run(_sys_info_all_poll, - _sys_info_all_poll_feedback_cb, _thread_end_cb, + ui->thread_system = + ecore_thread_feedback_run(_sys_info_all_poll, + _sys_info_all_poll_feedback_cb, _thread_end_cb, _thread_error_cb, ui, EINA_FALSE); - ui->thread_system = thr; - thr = ecore_thread_feedback_run(_process_list, _process_list_feedback_cb, + ui->thread_process = + ecore_thread_feedback_run(_process_list, _process_list_feedback_cb, _thread_end_cb, _thread_error_cb, ui, EINA_FALSE); - ui->thread_process = thr; evas_object_event_callback_add(ui->win, EVAS_CALLBACK_RESIZE, _evisum_resize_cb, ui); diff --git a/src/bin/ui/ui.h b/src/bin/ui/ui.h index 9c5c0d4..35a08ab 100644 --- a/src/bin/ui/ui.h +++ b/src/bin/ui/ui.h @@ -15,25 +15,6 @@ #define FILL EVAS_HINT_FILL #define EXPAND EVAS_HINT_EXPAND -typedef enum -{ - PROCESS_INFO_FIELD_PID, - PROCESS_INFO_FIELD_UID, - PROCESS_INFO_FIELD_SIZE, - PROCESS_INFO_FIELD_RSS, - PROCESS_INFO_FIELD_COMMAND, - PROCESS_INFO_FIELD_STATE, - PROCESS_INFO_FIELD_CPU_USAGE, - - // Not displayed in the main UI. - PROCESS_INFO_FIELD_NICE, - PROCESS_INFO_FIELD_PRI, - PROCESS_INFO_FIELD_CPU, - PROCESS_INFO_FIELD_THREADS, - // Not used yet in UI. - PROCESS_INFO_FIELD_CPU_TIME, -} Proc_Info_Field; - typedef enum { DATA_UNIT_B = 'B', @@ -62,83 +43,80 @@ typedef enum typedef struct Ui { - Evas_Object *win; - Evas_Object *menu; - Evas_Object *scroller; - Evas_Object *content; - Evas_Object *btn_general; - Evas_Object *btn_cpu; - Evas_Object *btn_mem; - Evas_Object *btn_storage; - Evas_Object *btn_misc; + Evas_Object *win; + Evas_Object *menu; + Evas_Object *scroller; + Evas_Object *content; + Evas_Object *btn_general; + Evas_Object *btn_cpu; + Evas_Object *btn_mem; + Evas_Object *btn_storage; + Evas_Object *btn_misc; - Evas_Object *disk_view; - Evas_Object *disk_activity; - Evas_Object *cpu_view; - Evas_Object *cpu_activity; - Evas_Object *mem_view; - Evas_Object *mem_activity; - Evas_Object *misc_view; - Evas_Object *misc_activity; - Evas_Object *system_activity; + Evas_Object *disk_view; + Evas_Object *disk_activity; + Evas_Object *cpu_view; + Evas_Object *cpu_activity; + Evas_Object *mem_view; + Evas_Object *mem_activity; + Evas_Object *misc_view; + Evas_Object *misc_activity; + Evas_Object *system_activity; - Elm_Transit *transit; - Evas_Object *current_view; + Elm_Transit *transit; + Evas_Object *current_view; - Eina_Bool cpu_visible; - Eina_Bool misc_visible; - Eina_Bool disk_visible; - Eina_Bool mem_visible; + Eina_Bool cpu_visible; + Eina_Bool misc_visible; + Eina_Bool disk_visible; + Eina_Bool mem_visible; - Evas_Object *progress_cpu; - Evas_Object *progress_mem; + Evas_Object *progress_cpu; + Evas_Object *progress_mem; - Evas_Object *title_mem; - Evas_Object *progress_mem_used; - Evas_Object *progress_mem_cached; - Evas_Object *progress_mem_buffered; - Evas_Object *progress_mem_shared; - Evas_Object *progress_mem_swap; + Evas_Object *title_mem; + Evas_Object *progress_mem_used; + Evas_Object *progress_mem_cached; + Evas_Object *progress_mem_buffered; + Evas_Object *progress_mem_shared; + Evas_Object *progress_mem_swap; - Evas_Object *btn_pid; - Evas_Object *btn_uid; - Evas_Object *btn_size; - Evas_Object *btn_rss; - Evas_Object *btn_cmd; - Evas_Object *btn_state; - Evas_Object *btn_cpu_usage; + Evas_Object *btn_pid; + Evas_Object *btn_uid; + Evas_Object *btn_size; + Evas_Object *btn_rss; + Evas_Object *btn_cmd; + Evas_Object *btn_state; + Evas_Object *btn_cpu_usage; Evisum_Ui_Cache *cache; Evas_Object *genlist_procs; Evas_Object *entry_search; - Ecore_Thread *thread_system; - Ecore_Thread *thread_process; + Ecore_Thread *thread_system; + Ecore_Thread *thread_process; - Ecore_Timer *timer_pid; - pid_t selected_pid; - pid_t program_pid; + Ecore_Timer *timer_pid; + pid_t selected_pid; + pid_t program_pid; - char *search_text; - Evas_Object *list_pid; + char *search_text; - Eina_Bool skip_wait; - Eina_Bool ready; + Eina_Bool skip_wait; + Eina_Bool ready; - Eina_List *cpu_times; + Eina_List *cpu_times; + Eina_List *cpu_list; + Evas_Object *temp_label; - Eina_List *cpu_list; - Evas_Object *temp_label; + int poll_delay; - int poll_delay; + Sort_Type sort_type; + Eina_Bool sort_reverse; + Eina_Bool show_self; - Sort_Type sort_type; - Eina_Bool sort_reverse; - Eina_Bool searching; - Eina_Bool show_self; - - uint64_t incoming_max; - uint64_t outgoing_max; + uint64_t incoming_max; + uint64_t outgoing_max; } Ui; Ui * diff --git a/src/bin/ui/ui_process_view.c b/src/bin/ui/ui_process_view.c index 3383ea2..ee60de3 100644 --- a/src/bin/ui/ui_process_view.c +++ b/src/bin/ui/ui_process_view.c @@ -303,7 +303,8 @@ _thread_info_set(Ui_Process *ui, Proc_Info *proc) } else { - cpu_usage = (double) (p->cpu_time - *cpu_time_prev) / ui->poll_delay; + cpu_usage = (double) (p->cpu_time - *cpu_time_prev) + / ui->poll_delay; *cpu_time_prev = p->cpu_time; } @@ -375,24 +376,29 @@ _proc_info_update(void *data) elm_object_text_set(ui->entry_pid_pid, eina_slstr_printf("%d", proc->pid)); elm_object_text_set(ui->entry_pid_uid, eina_slstr_printf("%d", proc->uid)); - elm_object_text_set(ui->entry_pid_cpu, eina_slstr_printf("%d", proc->cpu_id)); - elm_object_text_set(ui->entry_pid_threads, eina_slstr_printf("%d", proc->numthreads)); + elm_object_text_set(ui->entry_pid_cpu, + eina_slstr_printf("%d", proc->cpu_id)); + elm_object_text_set(ui->entry_pid_threads, + eina_slstr_printf("%d", proc->numthreads)); elm_object_text_set(ui->entry_pid_virt, evisum_size_format(proc->mem_virt)); elm_object_text_set(ui->entry_pid_rss, evisum_size_format(proc->mem_rss)); -#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__MacOS__) || defined(__OpenBSD__) +#if !defined(__linux__) elm_object_text_set(ui->entry_pid_shared, "N/A"); #else - elm_object_text_set(ui->entry_pid_shared, evisum_size_format(proc->mem_shared)); + elm_object_text_set(ui->entry_pid_shared, + evisum_size_format(proc->mem_shared)); #endif elm_object_text_set(ui->entry_pid_size, evisum_size_format(proc->mem_size)); elm_object_text_set(ui->entry_pid_nice, eina_slstr_printf("%d", proc->nice)); - elm_object_text_set(ui->entry_pid_pri, eina_slstr_printf("%d", proc->priority)); + elm_object_text_set(ui->entry_pid_pri, + eina_slstr_printf("%d", proc->priority)); elm_object_text_set(ui->entry_pid_state, proc->state); if (ui->pid_cpu_time && proc->cpu_time >= ui->pid_cpu_time) cpu_usage = (double)(proc->cpu_time - ui->pid_cpu_time) / ui->poll_delay; - elm_object_text_set(ui->entry_pid_cpu_usage, eina_slstr_printf("%.1f%%", cpu_usage)); + elm_object_text_set(ui->entry_pid_cpu_usage, + eina_slstr_printf("%.1f%%", cpu_usage)); ui->pid_cpu_time = proc->cpu_time; @@ -770,7 +776,8 @@ _threads_tab_add(Evas_Object *parent, Ui_Process *ui) elm_object_text_set(btn, _("CPU Usage")); _btn_icon_state_set(btn, ui->sort_reverse); evas_object_show(btn); - evas_object_smart_callback_add(btn, "clicked", _btn_cpu_usage_clicked_cb, ui); + evas_object_smart_callback_add(btn, "clicked", + _btn_cpu_usage_clicked_cb, ui); elm_box_pack_end(hbox, btn); ui->genlist_threads = genlist = elm_genlist_add(parent); @@ -781,7 +788,8 @@ _threads_tab_add(Evas_Object *parent, Ui_Process *ui) evas_object_size_hint_align_set(genlist, FILL, FILL); evas_object_show(genlist); - evas_object_smart_callback_add(ui->genlist_threads, "unrealized", _item_unrealized_cb, ui); + evas_object_smart_callback_add(ui->genlist_threads, "unrealized", + _item_unrealized_cb, ui); elm_box_pack_end(box, hbox); elm_box_pack_end(box, genlist); @@ -993,7 +1001,6 @@ _win_del_cb(void *data, Evas_Object *obj EINA_UNUSED, if (ui->hash_cpu_times) eina_hash_free(ui->hash_cpu_times); - if (ui->timer_pid) ecore_timer_del(ui->timer_pid); if (ui->selected_cmd) @@ -1055,7 +1062,8 @@ ui_process_win_add(int pid, const char *cmd) elm_box_pack_end(box, ui->content); elm_object_content_set(win, box); evas_object_smart_callback_add(win, "delete,request", _win_del_cb, ui); - evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, _win_resize_cb, ui); + evas_object_event_callback_add(win, EVAS_CALLBACK_RESIZE, + _win_resize_cb, ui); elm_win_center(win, EINA_TRUE, EINA_TRUE); evas_object_show(win);