From 7239d4bbb0e9ecf5a3d800632ca3dedc885e1595 Mon Sep 17 00:00:00 2001 From: Mike Massonnet Date: Mon, 10 May 2010 17:57:51 +0200 Subject: [PATCH] Display memory values < 1 MiB MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed the MB “typo” and show values for memory in KiB or B if needed. The threshold for displaying KiB (< 4 MiB) or B (< 9 KiB) are based on impulse. --- src/task-manager.c | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/task-manager.c b/src/task-manager.c index 4620c12..d878eb2 100644 --- a/src/task-manager.c +++ b/src/task-manager.c @@ -135,14 +135,35 @@ model_add_task (GtkTreeModel *model, Task *task) model_update_tree_iter (model, &iter, task); } +static void +memory_human_size (guint64 mem, gchar *mem_str) +{ + guint64 mem_tmp; + + mem_tmp = mem / 1024 / 1024; + if (mem_tmp > 3) + { + g_snprintf (mem_str, 64, _("%lu MiB"), mem_tmp); + return; + } + + mem_tmp = mem / 1024; + if (mem_tmp > 8) + { + g_snprintf (mem_str, 64, _("%lu KiB"), mem_tmp); + return; + } + + g_snprintf (mem_str, 64, _("%lu B"), mem); +} + static void model_update_tree_iter (GtkTreeModel *model, GtkTreeIter *iter, Task *task) { gchar vsz[64], rss[64], cpu[16]; - // TODO show values < 1 MB in KB or B - g_snprintf (vsz, 64, _("%lu MB"), task->vsz / 1024 / 1024); - g_snprintf (rss, 64, _("%lu MB"), task->rss / 1024 / 1024); + memory_human_size (task->vsz, vsz); + memory_human_size (task->rss, rss); // TODO make precision optional g_snprintf (cpu, 16, _("%.2f%%"), task->cpu_user + task->cpu_system);