diff --git a/src/main.c b/src/main.c index 79e0cb5..9503ec7 100644 --- a/src/main.c +++ b/src/main.c @@ -29,10 +29,14 @@ init_timeout (void) { guint num_processes; gfloat cpu, memory, swap; + guint64 swap_free, swap_total; xtm_task_manager_get_system_info (task_manager, &num_processes, &cpu, &memory, &swap); xtm_process_window_set_system_info (XTM_PROCESS_WINDOW (window), num_processes, cpu, memory, swap); + xtm_task_manager_get_swap_usage (task_manager, &swap_free, &swap_total); + xtm_process_window_show_swap_usage (XTM_PROCESS_WINDOW (window), (swap_total > 0)); + xtm_task_manager_update_model (task_manager); if (timeout == 0) diff --git a/src/process-statusbar.c b/src/process-statusbar.c index 60a64b8..836e2ad 100644 --- a/src/process-statusbar.c +++ b/src/process-statusbar.c @@ -25,6 +25,7 @@ enum PROP_CPU = 1, PROP_MEMORY, PROP_SWAP, + PROP_SHOW_SWAP, PROP_NUM_PROCESSES, }; typedef struct _XtmProcessStatusbarClass XtmProcessStatusbarClass; @@ -66,6 +67,8 @@ xtm_process_statusbar_class_init (XtmProcessStatusbarClass *klass) g_param_spec_float ("memory", "Memory", "Memory usage", 0, 100, 0, G_PARAM_CONSTRUCT|G_PARAM_WRITABLE)); g_object_class_install_property (class, PROP_SWAP, g_param_spec_float ("swap", "Swap", "Swap usage", 0, 100, 0, G_PARAM_CONSTRUCT|G_PARAM_WRITABLE)); + g_object_class_install_property (class, PROP_SHOW_SWAP, + g_param_spec_boolean ("show-swap", "ShowSwap", "Show or hide swap usage", TRUE, G_PARAM_WRITABLE)); g_object_class_install_property (class, PROP_NUM_PROCESSES, g_param_spec_uint ("num-processes", "NumProcesses", "Number of processes", 0, G_MAXUINT, 0, G_PARAM_CONSTRUCT|G_PARAM_WRITABLE)); } @@ -157,6 +160,13 @@ xtm_process_statusbar_set_property (GObject *object, guint property_id, const GV g_free (text); break; + case PROP_SHOW_SWAP: + if (g_value_get_boolean (value)) + gtk_widget_show (statusbar->label_swap); + else + gtk_widget_hide (statusbar->label_swap); + break; + case PROP_NUM_PROCESSES: statusbar->num_processes = g_value_get_uint (value); text = g_strdup_printf (_("Processes: %d"), statusbar->num_processes); diff --git a/src/process-window.c b/src/process-window.c index 4cbe9af..da40c7e 100644 --- a/src/process-window.c +++ b/src/process-window.c @@ -424,3 +424,11 @@ xtm_process_window_set_system_info (XtmProcessWindow *window, guint num_processe gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (window->priv->cpu_monitor), cpu / 100.0); } +void +xtm_process_window_show_swap_usage (XtmProcessWindow *window, gboolean show_swap_usage) +{ + g_return_if_fail (XTM_IS_PROCESS_WINDOW (window)); + g_return_if_fail (GTK_IS_STATUSBAR (window->priv->statusbar)); + g_object_set (window->priv->statusbar, "show-swap", show_swap_usage, NULL); +} + diff --git a/src/task-manager.c b/src/task-manager.c index 32fef58..9f13c48 100644 --- a/src/task-manager.c +++ b/src/task-manager.c @@ -269,6 +269,8 @@ xtm_task_manager_get_system_info (XtmTaskManager *manager, guint *num_processes, { guint64 memory_used, swap_used; + g_return_if_fail (XTM_IS_TASK_MANAGER (manager)); + /* Set number of processes */ *num_processes = manager->tasks->len; @@ -287,9 +289,18 @@ xtm_task_manager_get_system_info (XtmTaskManager *manager, guint *num_processes, *cpu = manager->cpu_user + manager->cpu_system; } +void +xtm_task_manager_get_swap_usage (XtmTaskManager *manager, guint64 *swap_free, guint64 *swap_total) +{ + g_return_if_fail (XTM_IS_TASK_MANAGER (manager)); + *swap_free = manager->swap_free; + *swap_total = manager->swap_total; +} + const GArray * xtm_task_manager_get_task_list (XtmTaskManager *manager) { + g_return_val_if_fail (XTM_IS_TASK_MANAGER (manager), NULL); xtm_task_manager_update_model (manager); return manager->tasks; } @@ -300,6 +311,8 @@ xtm_task_manager_update_model (XtmTaskManager *manager) GArray *array; guint i; + g_return_if_fail (XTM_IS_TASK_MANAGER (manager)); + /* Retrieve initial task list and return */ if (manager->tasks->len == 0) { diff --git a/src/task-manager.h b/src/task-manager.h index df6e939..ab386a0 100644 --- a/src/task-manager.h +++ b/src/task-manager.h @@ -86,6 +86,7 @@ XtmTaskManager * xtm_task_manager_new (GtkTreeModel *model); const gchar * xtm_task_manager_get_username (XtmTaskManager *manager); const gchar * xtm_task_manager_get_hostname (XtmTaskManager *manager); void xtm_task_manager_get_system_info (XtmTaskManager *manager, guint *num_processes, gfloat *cpu, gfloat *memory, gfloat *swap); +void xtm_task_manager_get_swap_usage (XtmTaskManager *manager, guint64 *swap_free, guint64 *swap_total); const GArray * xtm_task_manager_get_task_list (XtmTaskManager *manager); void xtm_task_manager_update_model (XtmTaskManager *manager);