changeset 412:eb5ae19a62f6

Display elapsed time since previous get_exec_time() call (debug only).
author zas_
date Fri, 18 Apr 2008 21:53:33 +0000
parents f744baaa71a5
children 9e521adbf312
files src/main.c
diffstat 1 files changed, 35 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/main.c	Fri Apr 18 21:51:08 2008 +0000
+++ b/src/main.c	Fri Apr 18 21:53:33 2008 +0000
@@ -117,13 +117,38 @@
 	return ((options->image.zoom_increment != 0) ? (gdouble)options->image.zoom_increment / 10.0 : 1.0);
 }
 
+static gint timeval_delta(struct timeval *result, struct timeval *x, struct timeval *y)
+{
+	if (x->tv_usec < y->tv_usec)
+		{
+		gint nsec = (y->tv_usec - x->tv_usec) / 1000000 + 1;
+		y->tv_usec -= 1000000 * nsec;
+		y->tv_sec += nsec;
+		}
+
+	if (x->tv_usec - y->tv_usec > 1000000)
+		{
+		gint nsec = (x->tv_usec - y->tv_usec) / 1000000;
+		y->tv_usec += 1000000 * nsec;
+		y->tv_sec -= nsec;
+	}
+
+	result->tv_sec = x->tv_sec - y->tv_sec;
+	result->tv_usec = x->tv_usec - y->tv_usec;
+
+	return x->tv_sec < y->tv_sec;
+}
+
 const gchar *get_exec_time()
 {
-	static gchar timestr[20];
+	static gchar timestr[30];
 	static struct timeval start_tv = {0, 0};
-	
+	static struct timeval previous = {0, 0};
+	static gint started = 0;
+
 	struct timeval tv = {0, 0};
-	
+	static struct timeval delta = {0, 0};
+
 	gettimeofday(&tv, NULL);
 	
 	if (start_tv.tv_sec == 0) start_tv = tv;
@@ -136,8 +161,13 @@
 		tv.tv_usec += 1000000 - start_tv.tv_usec;
 		tv.tv_sec -= 1;
 		}
-	
-	g_snprintf(timestr, sizeof(timestr), "%5d.%06d", (int)tv.tv_sec, (int)tv.tv_usec);
+
+	if (started) timeval_delta(&delta, &tv, &previous);
+
+	previous = tv;
+	started = 1;
+
+	g_snprintf(timestr, sizeof(timestr), "%5d.%06d (+%05d.%06d)", (int)tv.tv_sec, (int)tv.tv_usec, (int)delta.tv_sec, (int)delta.tv_usec);
 	
 	return timestr;
 }