diff --git a/src/libsysprof-ui/sysprof-capture-view.c b/src/libsysprof-ui/sysprof-capture-view.c index 8d2a36d9..15e96ace 100644 --- a/src/libsysprof-ui/sysprof-capture-view.c +++ b/src/libsysprof-ui/sysprof-capture-view.c @@ -358,7 +358,12 @@ sysprof_capture_view_scan_worker (GTask *task, if (mark->duration > mstat->max) mstat->max = mark->duration; - mstat->avg += mark->duration; + if (mark->duration > 0) + { + mstat->avg += mark->duration; + mstat->avg_count++; + } + mstat->count++; } @@ -395,8 +400,8 @@ sysprof_capture_view_scan_worker (GTask *task, { SysprofMarkStat *mstat = v; - if (mstat->count > 0 && mstat->avg > 0) - mstat->avg /= mstat->count; + if (mstat->avg_count > 0 && mstat->avg > 0) + mstat->avg /= mstat->avg_count; #if 0 g_print ("%s: count=%ld avg=%ld min=%ld max=%ld\n", diff --git a/src/libsysprof-ui/sysprof-ui-private.h b/src/libsysprof-ui/sysprof-ui-private.h index 99d5bc64..d6982c18 100644 --- a/src/libsysprof-ui/sysprof-ui-private.h +++ b/src/libsysprof-ui/sysprof-ui-private.h @@ -32,6 +32,7 @@ typedef struct gint64 max; gint64 min; gint64 avg; + guint64 avg_count; } SysprofMarkStat; SysprofMarkStat *_sysprof_mark_stat_new (const gchar *name);