From 41a03a9354536551d2063be5750a06ec252493c2 Mon Sep 17 00:00:00 2001 From: rim Date: Tue, 29 May 2018 03:33:52 +0300 Subject: [PATCH] Improve --- src/main.c | 6 +++--- src/process-monitor.c | 12 ++++++------ src/process-tree-model.c | 32 ++++++++++++++++++++------------ src/process-tree-view.c | 61 ++++++++++++++++++++++++++++--------------------------------- src/process-window.c | 6 +++--- src/settings-dialog.c | 6 +++--- src/settings.c | 4 ++-- src/task-manager-bsd.c | 5 +++-- src/task-manager-freebsd.c | 63 +++++++++++++++++++++++++++++++-------------------------------- src/task-manager.c | 12 ++++++------ 10 files changed, 105 insertions(+), 102 deletions(-) diff --git a/src/main.c b/src/main.c index 186edc7..464bf4d 100644 --- a/src/main.c +++ b/src/main.c @@ -26,12 +26,12 @@ static XtmSettings *settings; static GtkWidget *window; static GtkStatusIcon *status_icon; static XtmTaskManager *task_manager; -static gboolean timeout = FALSE; +static guint timeout = 0; static gboolean start_hidden = FALSE; static GOptionEntry main_entries[] = { - { "start-hidden", 0, G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &start_hidden, "Don't open a task manager window" }, - { NULL } + { "start-hidden", 0, G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &start_hidden, "Don't open a task manager window", NULL }, + { NULL, 0, 0, 0, NULL, NULL, NULL } }; static void diff --git a/src/process-monitor.c b/src/process-monitor.c index 1dc0eb3..3e1bd01 100644 --- a/src/process-monitor.c +++ b/src/process-monitor.c @@ -121,7 +121,7 @@ xtm_process_monitor_draw (GtkWidget *widget, cairo_t *cr) XtmProcessMonitor *monitor = XTM_PROCESS_MONITOR (widget); guint minimum_history_length; - minimum_history_length = gtk_widget_get_allocated_width(widget) / monitor->step_size; + minimum_history_length = (guint)(gtk_widget_get_allocated_width(widget) / monitor->step_size); if (monitor->history->len < minimum_history_length) g_array_set_size (monitor->history, minimum_history_length + 1); @@ -136,7 +136,7 @@ xtm_process_monitor_expose (GtkWidget *widget, GdkEventExpose *event __unused) guint minimum_history_length; cairo_t *cr; - minimum_history_length = widget->allocation.width / monitor->step_size; + minimum_history_length = (guint)(widget->allocation.width / monitor->step_size); if (monitor->history->len < minimum_history_length) g_array_set_size (monitor->history, minimum_history_length + 1); @@ -153,15 +153,15 @@ xtm_process_monitor_graph_surface_create (XtmProcessMonitor *monitor, gint width cairo_t *cr; cairo_surface_t *graph_surface; gfloat *peak; - gfloat step_size; + gdouble step_size; gint i; if (monitor->history->len <= 1) { g_warning ("Cannot paint graph with n_peak <= 1"); return NULL; } - step_size = monitor->step_size; + step_size = (gdouble)monitor->step_size; graph_surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); cr = cairo_create (graph_surface); @@ -180,7 +180,7 @@ xtm_process_monitor_graph_surface_create (XtmProcessMonitor *monitor, gint width { peak = &g_array_index (monitor->history, gfloat, i); cairo_translate (cr, -step_size, 0); - cairo_line_to (cr, width, (1.0 - *peak) * height); + cairo_line_to (cr, width, (1.0 - ((gdouble)(*peak))) * height); } cairo_line_to (cr, width, height); cairo_fill (cr); @@ -201,7 +201,7 @@ xtm_process_monitor_graph_surface_create (XtmProcessMonitor *monitor, gint width { peak = &g_array_index (monitor->history, gfloat, i); cairo_translate (cr, -step_size, 0); - cairo_line_to (cr, width, (1.0 - *peak) * height); + cairo_line_to (cr, width, (1.0 - ((gdouble)(*peak))) * height); } cairo_stroke (cr); diff --git a/src/process-tree-model.c b/src/process-tree-model.c index 325b945..551a722 100644 --- a/src/process-tree-model.c +++ b/src/process-tree-model.c @@ -137,7 +137,7 @@ xtm_process_tree_model_init (XtmProcessTreeModel *treemodel) treemodel->c_column = XTM_PTV_COLUMN_PID; treemodel->p_column = XTM_PTV_COLUMN_PPID; - treemodel->stamp = g_random_int (); + treemodel->stamp = (gint)g_random_int (); if (treemodel->stamp == 0) treemodel->stamp = 1; } @@ -215,7 +215,7 @@ xtm_process_tree_model_get_iter (GtkTreeModel *model, GtkTreeIter *iter, GtkTree /* Walk the tree to create the iter */ for (i = 0; i < depth; i++) { - node = g_node_nth_child (node, indices[i]); + node = g_node_nth_child (node, (guint)indices[i]); if (node == NULL) break; } @@ -231,7 +231,9 @@ xtm_process_tree_model_get_path (GtkTreeModel *model, GtkTreeIter *iter) GtkTreePath *path; GNode *child, *parent; XtmProcessTreeModel *treemodel = XTM_PROCESS_TREE_MODEL (model); + g_return_val_if_fail (iter->stamp == treemodel->stamp, NULL); + child = iter->user_data; parent = child->parent; path = gtk_tree_path_new (); @@ -260,15 +262,17 @@ xtm_process_tree_model_get_value (GtkTreeModel *model, GtkTreeIter *iter, gint c /* Use path for non-persistent models */ if (lnk->path) gtk_tree_model_get_iter (model, iter, lnk->path); - return gtk_tree_model_get_value (model, iter, column, value); + gtk_tree_model_get_value (model, iter, column, value); } static gboolean xtm_process_tree_model_iter_next (GtkTreeModel *model, GtkTreeIter *iter) { GNode *node; XtmProcessTreeModel *treemodel = XTM_PROCESS_TREE_MODEL (model); + g_return_val_if_fail (iter->stamp == treemodel->stamp, FALSE); + node = iter->user_data; iter->user_data = g_node_next_sibling (node); /* Make iter invalid if no node has been found */ @@ -298,7 +302,9 @@ xtm_process_tree_model_iter_has_child (GtkTreeModel *model, GtkTreeIter *iter) { GNode *node; XtmProcessTreeModel *treemodel = XTM_PROCESS_TREE_MODEL (model); + g_return_val_if_fail (iter->stamp == treemodel->stamp, FALSE); + node = iter->user_data; return g_node_first_child (node) != NULL; } @@ -313,7 +319,7 @@ xtm_process_tree_model_iter_n_children (GtkTreeModel *model, GtkTreeIter *iter) node = treemodel->tree; else node = iter->user_data; - return g_node_n_children (node); + return (gint)g_node_n_children (node); } static gboolean @@ -326,7 +332,7 @@ xtm_process_tree_model_iter_nth_child (GtkTreeModel *model, GtkTreeIter *iter, G node = treemodel->tree; else node = parent->user_data; - iter->user_data = g_node_nth_child (node, n); + iter->user_data = g_node_nth_child (node, (guint)n); /* Make iter only valid if a node has been found */ iter->stamp = iter->user_data ? treemodel->stamp : 0; return iter->user_data != NULL; @@ -439,7 +445,7 @@ xtm_process_tree_model_row_changed (XtmProcessTreeModel *treemodel, GtkTreePath GtkTreeIter s_iter; XtmCrossLink *lnk, *c_link; GNode *node, *next_node, *old_parent; - struct find_node_struct found = {{0}}; + struct find_node_struct found; GValue c_value = {0}; GValue p_value = {0}; gboolean same = TRUE; @@ -458,6 +464,7 @@ xtm_process_tree_model_row_changed (XtmProcessTreeModel *treemodel, GtkTreePath s_iter.user_data3 = NULL; /* Use the root entry as fall-back if no parent could be found */ + bzero(&found, sizeof(found)); found.parent = treemodel->tree; found.treemodel = treemodel; gtk_tree_model_get_value (model, iter, treemodel->p_column, &found.p_value); @@ -589,7 +596,7 @@ static void do_path (gpointer data, gpointer user_data) { XtmCrossLink *lnk = data; - void (*func) (GtkTreePath*) = user_data; + void (*func) (GtkTreePath*) = (void (*) (GtkTreePath*))user_data; /* Use path for non-persistent models */ g_return_if_fail (lnk->path); func (lnk->path); @@ -602,7 +609,7 @@ xtm_process_tree_model_row_inserted (XtmProcessTreeModel *treemodel, GtkTreePath GtkTreeIter s_iter; XtmCrossLink *lnk, *c_link; GNode *node, *next_node; - struct find_node_struct found = {{0}}; + struct find_node_struct found; GValue c_value = {0}; GValue p_value = {0}; gboolean same; @@ -633,8 +640,9 @@ xtm_process_tree_model_row_inserted (XtmProcessTreeModel *treemodel, GtkTreePath /* Need to update all path caches after the insert and increment them with one */ if (not_persist) g_sequence_foreach_range (g_sequence_iter_next (lnk->list), g_sequence_get_end_iter (treemodel->list), - do_path, gtk_tree_path_next); + do_path, (gpointer)gtk_tree_path_next); + bzero(&found, sizeof(found)); found.parent = treemodel->tree; found.treemodel = treemodel; gtk_tree_model_get_value (model, iter, treemodel->p_column, &found.p_value); @@ -748,7 +756,7 @@ xtm_process_tree_model_row_deleted (XtmProcessTreeModel *treemodel, GtkTreePath /* Need to update all path caches after the remove and decrement them with one */ if (not_persist) g_sequence_foreach_range (g_sequence_iter_next (lnk->list), g_sequence_get_end_iter (treemodel->list), - do_path, gtk_tree_path_prev); + do_path, (gpointer)gtk_tree_path_prev); del_node = lnk->tree; old_parent = del_node->parent; @@ -809,7 +817,7 @@ reorder_children (GNode *parent, gpointer data) new_order = g_new (gint, size); for (i = 0; i < size; i++) { - new_order[i] = i; + new_order[i] = (gint)i; } i = 0; /* Walk the whole list in the new order */ @@ -832,7 +840,7 @@ reorder_children (GNode *parent, gpointer data) if (c_pos > 0) { /* move the items in between to keep order list in sync with the current tree */ - memmove (new_order + i + 1, new_order + i, c_pos * sizeof(gint)); + memmove ((new_order + i + 1), (new_order + i), ((guint)c_pos * sizeof(gint))); moved = TRUE; } /* Store the old position at the new location */ diff --git a/src/process-tree-view.c b/src/process-tree-view.c index 53f278e..e97042c 100644 --- a/src/process-tree-view.c +++ b/src/process-tree-view.c @@ -208,11 +208,12 @@ xtm_process_tree_view_init (XtmProcessTreeView *treeview) /* Set initial sort column */ { - guint sort_column_id; + guint sort_column_idu; + gint sort_column_id; GtkSortType sort_type; - g_object_get (treeview->settings, "sort-column-id", &sort_column_id, "sort-type", &sort_type, NULL); - treeview->sort_column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), treeview->columns_positions[sort_column_id]); + g_object_get (treeview->settings, "sort-column-id", &sort_column_idu, "sort-type", &sort_type, NULL); + treeview->sort_column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), treeview->columns_positions[sort_column_idu]); gtk_tree_view_column_set_sort_indicator (treeview->sort_column, TRUE); gtk_tree_view_column_set_sort_order (treeview->sort_column, sort_type); sort_column_id = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (treeview->sort_column), "sort-column-id")); @@ -263,14 +264,14 @@ xtm_process_tree_view_finalize (GObject *object) static void column_task_pack_cells (XtmProcessTreeView *treeview, GtkTreeViewColumn *column) { - GtkCellRenderer *cell_cmdline, *cell_icon; + GtkCellRenderer *cell_cmdline; gboolean show_application_icons; g_object_get (treeview->settings, "show-application-icons", &show_application_icons, NULL); if (show_application_icons) { #ifdef HAVE_WNCK - cell_icon = gtk_cell_renderer_pixbuf_new (); + GtkCellRenderer *cell_icon = gtk_cell_renderer_pixbuf_new (); gtk_tree_view_column_pack_start (GTK_TREE_VIEW_COLUMN (column), cell_icon, FALSE); gtk_tree_view_column_set_attributes (GTK_TREE_VIEW_COLUMN (column), cell_icon, "pixbuf", XTM_PTV_COLUMN_ICON, "cell-background", XTM_PTV_COLUMN_BACKGROUND, NULL); #endif @@ -288,7 +289,7 @@ columns_changed (XtmProcessTreeView *treeview) GList *columns, *l; GtkTreeViewColumn *column; gint column_id; - gint i; + gushort i; columns = gtk_tree_view_get_columns (GTK_TREE_VIEW (treeview)); if (g_list_length (columns) < N_COLUMNS) @@ -311,7 +312,7 @@ columns_changed (XtmProcessTreeView *treeview) static void read_columns_positions (XtmProcessTreeView *treeview) { - gint i; + gushort i; gchar *columns_positions; gchar **columns_positions_split; @@ -326,22 +327,22 @@ read_columns_positions (XtmProcessTreeView *treeview) { columns_positions_split = g_strsplit (columns_positions, ";", N_COLUMNS + 1); for (i = 0; i < N_COLUMNS && columns_positions_split[i] != NULL; i++) - treeview->columns_positions[i] = (gint)g_ascii_strtoll (columns_positions_split[i], NULL, 10); + treeview->columns_positions[i] = (gushort)g_ascii_strtoll (columns_positions_split[i], NULL, 10); g_strfreev (columns_positions_split); g_free (columns_positions); } } static void save_columns_positions (XtmProcessTreeView *treeview) { gint i; - gint offset = 0; + gulong offset = 0; #define COLUMNS_POSITIONS_STRLEN (N_COLUMNS * 4 + 1) gchar columns_positions[COLUMNS_POSITIONS_STRLEN] = { 0 }; for (i = 0; i < N_COLUMNS; i++) - offset += g_snprintf (&columns_positions[offset], (sizeof(columns_positions) - offset), "%d;", treeview->columns_positions[i]); + offset += (gulong)g_snprintf (&columns_positions[offset], (sizeof(columns_positions) - offset), "%d;", treeview->columns_positions[i]); g_object_set (treeview->settings, "columns-positions", columns_positions, NULL); } @@ -516,33 +517,28 @@ popup_menu (XtmProcessTreeView *treeview, GPid pid, guint activate_time, gboolea static gboolean treeview_clicked (XtmProcessTreeView *treeview, GdkEventButton *event) { + GtkTreeModel *model; + GtkTreeSelection *selection; + GtkTreePath *path; + GtkTreeIter iter; + gboolean tree; GPid pid; if (event->button != 3) return FALSE; - { - GtkTreeModel *model; - GtkTreeSelection *selection; - GtkTreePath *path; - GtkTreeIter iter; - gboolean tree; - - g_object_get (treeview->settings, "process-tree", &tree, NULL); - model = GTK_TREE_MODEL (tree ? treeview->model_tree : treeview->model_filter); - selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); - gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (treeview), (gint)event->x, (gint)event->y, &path, NULL, NULL, NULL); - - if (path == NULL) - return FALSE; - - gtk_tree_model_get_iter (model, &iter, path); - gtk_tree_model_get (model, &iter, XTM_PTV_COLUMN_PID, &pid, -1); - gtk_tree_selection_select_path (selection, path); - gtk_tree_path_free (path); + g_object_get (treeview->settings, "process-tree", &tree, NULL); + model = GTK_TREE_MODEL (tree ? treeview->model_tree : treeview->model_filter); + selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)); + gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (treeview), (gint)event->x, (gint)event->y, &path, NULL, NULL, NULL); + if (path == NULL) + return FALSE; + gtk_tree_model_get_iter (model, &iter, path); + gtk_tree_model_get (model, &iter, XTM_PTV_COLUMN_PID, &pid, -1); + gtk_tree_selection_select_path (selection, path); + gtk_tree_path_free (path); - G_DEBUG_FMT ("Found iter with pid %d", pid); - } + G_DEBUG_FMT ("Found iter with pid %d", pid); popup_menu (treeview, pid, event->time, TRUE); @@ -553,7 +549,6 @@ static gboolean treeview_key_pressed (XtmProcessTreeView *treeview, GdkEventKey *event) { GPid pid; - GtkTreeModel *model; GtkTreeSelection *selection; GtkTreeIter iter; @@ -730,7 +725,7 @@ settings_changed (GObject *object, GParamSpec *pspec, XtmProcessTreeView *treevi } else { - g_signal_handlers_disconnect_by_func (treeview->model_tree, G_CALLBACK (expand_row), treeview); + g_signal_handlers_disconnect_by_func (treeview->model_tree, (gpointer)G_CALLBACK (expand_row), treeview); } } } diff --git a/src/process-window.c b/src/process-window.c index 3f455a5..32cf8e7 100644 --- a/src/process-window.c +++ b/src/process-window.c @@ -90,7 +90,7 @@ filter_entry_icon_pressed_cb (GtkEntry *entry, } } -Window +static Window Select_Window (Display *dpy, int screen) { int status; @@ -270,14 +270,14 @@ xtm_process_window_init (XtmProcessWindow *window) toolitem = GTK_WIDGET (gtk_builder_get_object (window->builder, "graph-cpu")); window->cpu_monitor = xtm_process_monitor_new (); - xtm_process_monitor_set_step_size (XTM_PROCESS_MONITOR (window->cpu_monitor), refresh_rate / 1000.0); + xtm_process_monitor_set_step_size (XTM_PROCESS_MONITOR (window->cpu_monitor), refresh_rate / 1000.0f); xtm_process_monitor_set_type (XTM_PROCESS_MONITOR (window->cpu_monitor), 0); gtk_widget_show (window->cpu_monitor); gtk_container_add (GTK_CONTAINER (toolitem), window->cpu_monitor); toolitem = GTK_WIDGET (gtk_builder_get_object (window->builder, "graph-mem")); window->mem_monitor = xtm_process_monitor_new (); - xtm_process_monitor_set_step_size (XTM_PROCESS_MONITOR (window->mem_monitor), refresh_rate / 1000.0); + xtm_process_monitor_set_step_size (XTM_PROCESS_MONITOR (window->mem_monitor), refresh_rate / 1000.0f); xtm_process_monitor_set_type (XTM_PROCESS_MONITOR (window->mem_monitor), 1); gtk_widget_show (window->mem_monitor); gtk_container_add (GTK_CONTAINER (toolitem), window->mem_monitor); diff --git a/src/settings-dialog.c b/src/settings-dialog.c index 46ab437..93f4891 100644 --- a/src/settings-dialog.c +++ b/src/settings-dialog.c @@ -83,7 +83,7 @@ builder_bind_toggle_button (GtkBuilder *builder, gchar *widget_name, XtmSettings static void combobox_changed (GtkComboBox *combobox, XtmSettings *settings) { - guint active = gtk_combo_box_get_active (combobox); + gint active = gtk_combo_box_get_active (combobox); gchar *setting_name = g_object_get_data (G_OBJECT (combobox), "setting-name"); g_object_set (settings, setting_name, active, NULL); } @@ -141,7 +141,7 @@ xtm_settings_dialog_init (XtmSettingsDialog *dialog) g_object_get (dialog->settings, "toolbar-style", &toolbar_style, NULL); g_object_set_data (G_OBJECT (combobox), "setting-name", "toolbar-style"); - gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), toolbar_style); + gtk_combo_box_set_active (GTK_COMBO_BOX (combobox), (gint)toolbar_style); g_signal_connect (combobox, "changed", G_CALLBACK (combobox_changed), dialog->settings); } @@ -189,7 +189,7 @@ xtm_settings_dialog_hide (GtkWidget *widget) gtk_widget_hide (XTM_SETTINGS_DIALOG (widget)->window); gtk_window_move (GTK_WINDOW (XTM_SETTINGS_DIALOG (widget)->window), winx, winy); #if !GTK_CHECK_VERSION(3, 0, 0) - GTK_WIDGET_UNSET_FLAGS (widget, GTK_VISIBLE); + GTK_WIDGET_UNSET_FLAGS (widget, (guint)GTK_VISIBLE); #endif } diff --git a/src/settings.c b/src/settings.c index 5891b39..4fbf99e 100644 --- a/src/settings.c +++ b/src/settings.c @@ -188,7 +188,7 @@ transform_string_to_int (const GValue *src, GValue *dst) static void transform_string_to_uint (const GValue *src, GValue *dst) { - g_value_set_uint (dst, (gint)strtoul (g_value_get_string (src), NULL, 10)); + g_value_set_uint (dst, (guint)strtoul (g_value_get_string (src), NULL, 10)); } static void @@ -344,7 +344,7 @@ xtm_settings_save_settings (XtmSettings *settings) } data = g_key_file_to_data (rc, &length, NULL); - if (!g_file_set_contents (filename, data, length, &error)) + if (!g_file_set_contents (filename, data, (gssize)length, &error)) { g_warning ("Unable to save settings: %s", error->message); g_error_free (error); diff --git a/src/task-manager-bsd.c b/src/task-manager-bsd.c index e921c64..8094332 100644 --- a/src/task-manager-bsd.c +++ b/src/task-manager-bsd.c @@ -111,13 +111,14 @@ gboolean get_task_list (GArray *task_list) g_strlcpy(t.name, p.p_comm, strlen(p.p_comm) + 1); /* shamelessly stolen from top/machine.c */ if (!P_ZOMBIE(&p)) { - size = 128; + size = 1024; if ((args = malloc(size)) == NULL) errx(1,"failed to allocate memory for argv structures at %zu", size); bzero(args, size); for (;; size *= 2) { if ((args = realloc(args, size)) == NULL) errx(1,"failed to allocate memory (size=%zu) for argv structures of pid %d", size, t.pid); + bzero(args, size); mib[0] = CTL_KERN; mib[1] = KERN_PROC_ARGS; mib[2] = t.pid; @@ -138,7 +139,7 @@ gboolean get_task_list (GArray *task_list) free(args); } - t.cpu_user = (100.0 * ((double) p.p_pctcpu / FSCALE)); + t.cpu_user = (100.0f * ((gfloat)p.p_pctcpu / FSCALE)); t.cpu_system = 0.0f; /* TODO ? */ g_array_append_val(task_list, t); } diff --git a/src/task-manager-freebsd.c b/src/task-manager-freebsd.c index ac49064..c4d985f 100644 --- a/src/task-manager-freebsd.c +++ b/src/task-manager-freebsd.c @@ -27,7 +27,19 @@ #include "task-manager.h" -guint64 +static const gchar ki_stat2state[] = { + ' ', /* - */ + 'R', /* SIDL */ + 'R', /* SRUN */ + 'S', /* SSLEEP */ + 'T', /* SSTOP */ + 'Z', /* SZOMB */ + 'W', /* SWAIT */ + 'L' /* SLOCK */ +}; + + +static guint64 get_mem_by_bytes (const gchar *name) { guint64 buf = 0; @@ -39,14 +51,14 @@ get_mem_by_bytes (const gchar *name) return buf; } -guint64 +static guint64 get_mem_by_pages (const gchar *name) { guint64 res; res = get_mem_by_bytes (name); if (res > 0) - res *= getpagesize (); + res *= (guint64)getpagesize (); return res; } @@ -71,8 +83,8 @@ get_memory_usage (guint64 *memory_total, guint64 *memory_free, guint64 *memory_c return FALSE; kvm_getswapinfo (kd, &kswap, 1, 0); - *swap_total = ((guint64)kswap.ksw_total) * getpagesize (); - *swap_free = ((guint64)(kswap.ksw_total - kswap.ksw_used)) * getpagesize (); + *swap_total = (guint64)kswap.ksw_total * (guint64)getpagesize (); + *swap_free = ((guint64)(kswap.ksw_total - kswap.ksw_used)) * (guint64)getpagesize (); kvm_close (kd); } @@ -129,9 +141,9 @@ get_task_details (struct kinfo_proc *kp, Task *task) task->cpu_user = 100.0f * ((float)kp->ki_pctcpu / FSCALE); task->cpu_system = 0.0f; task->vsz = kp->ki_size; - task->rss = kp->ki_rssize * getpagesize (); + task->rss = ((guint64)kp->ki_rssize * (guint64)getpagesize ()); task->uid = kp->ki_uid; - task->prio = (gushort)kp->ki_nice; + task->prio = (gshort)kp->ki_nice; g_strlcpy (task->name, kp->ki_comm, sizeof(task->name)); oid[0] = CTL_KERN; @@ -170,36 +182,24 @@ get_task_details (struct kinfo_proc *kp, Task *task) i = 0; switch (kp->ki_stat) { - case SSTOP: - task->state[i] = 'T'; - break; - - case SSLEEP: - if (kp->ki_tdflags & TDF_SINTR) - task->state[i] = kp->ki_slptime >= MAXSLP ? 'I' : 'S'; - else - task->state[i] = 'D'; - break; - - case SRUN: case SIDL: - task->state[i] = 'R'; - break; - + case SRUN: + case SSTOP: + case SZOMB: case SWAIT: - task->state[i] = 'W'; - break; - case SLOCK: - task->state[i] = 'L'; - break; + task->state[i] = ki_stat2state[(size_t)kp->ki_stat]; + break; - case SZOMB: - task->state[i] = 'Z'; - break; + case SSLEEP: + if (kp->ki_tdflags & TDF_SINTR) + task->state[i] = kp->ki_slptime >= MAXSLP ? 'I' : 'S'; + else + task->state[i] = 'D'; + break; default: - task->state[i] = '?'; + task->state[i] = '?'; } i++; if (!(kp->ki_sflag & PS_INMEM)) @@ -222,7 +222,6 @@ get_task_details (struct kinfo_proc *kp, Task *task) task->state[i++] = '+'; if (kp->ki_flag & P_JAILED) task->state[i++] = 'J'; - task->state[i] = '\0'; return TRUE; } diff --git a/src/task-manager.c b/src/task-manager.c index 0624aa1..8c4ceaf 100644 --- a/src/task-manager.c +++ b/src/task-manager.c @@ -267,7 +267,7 @@ model_update_tree_iter (XtmTaskManager *manager, GtkTreeIter *iter, glong timest XTM_PTV_COLUMN_VSZ_STR, vsz, XTM_PTV_COLUMN_RSS, task->rss, XTM_PTV_COLUMN_RSS_STR, rss, - XTM_PTV_COLUMN_CPU, task->cpu_user + task->cpu_system, + XTM_PTV_COLUMN_CPU, (task->cpu_user + task->cpu_system), XTM_PTV_COLUMN_CPU_STR, cpu, XTM_PTV_COLUMN_PRIORITY, task->prio, XTM_PTV_COLUMN_BACKGROUND, background, @@ -297,7 +297,7 @@ task_list_find_for_pid (GArray *task_list, GPid pid, Task **task, guint *idx) { if (NULL != task_tmp) { - (*idx) = (((size_t)task_tmp - (size_t)task_list->data) / sizeof(Task)); + (*idx) = (guint)(((size_t)task_tmp - (size_t)task_list->data) / sizeof(Task)); } else { @@ -395,10 +395,10 @@ xtm_task_manager_update_model (XtmTaskManager *manager) Task *task, *task_new; GtkTreeIter cur_iter = iter; - gtk_tree_model_get (manager->model, &iter, XTM_PTV_COLUMN_CPU_STR, &cpu_str, XTM_PTV_COLUMN_TIMESTAMP, &old_timestamp, XTM_PTV_COLUMN_PID, &pid, -1); + valid = gtk_tree_model_iter_next (manager->model, &iter); + gtk_tree_model_get (manager->model, &cur_iter, XTM_PTV_COLUMN_CPU_STR, &cpu_str, XTM_PTV_COLUMN_TIMESTAMP, &old_timestamp, XTM_PTV_COLUMN_PID, &pid, -1); found = (g_strcmp0 (cpu_str, "-") == 0); g_free (cpu_str); - valid = gtk_tree_model_iter_next (manager->model, &iter); if (found && (timestamp - old_timestamp) > TIMESTAMP_DELTA) { G_DEBUG_FMT ("Remove old task %d", pid); @@ -446,7 +446,7 @@ xtm_task_manager_update_model (XtmTaskManager *manager) } g_free (color); } - + if (need_update) { model_update_tree_iter (manager, &cur_iter, timestamp, update_cmd_line, task); @@ -545,5 +545,5 @@ set_priority_to_pid (GPid pid, gint priority) gint task_pid_compare_fn(gconstpointer a, gconstpointer b) { - return (((Task*)a)->pid - ((Task*)b)->pid); + return (((const Task*)a)->pid - ((const Task*)b)->pid); } -- libgit2 0.27.0