From bd87ae9346503cb13ab1d12ff6f135b77fa0b473 Mon Sep 17 00:00:00 2001
From: Bert <ber.t@gmx.com>
Date: Tue, 28 Jun 2011 13:45:57 +0200
Subject: [PATCH] All timeouts in milliseconds

---
 Makefile |  2 +-
 main.c   | 18 +++++++++---------
 util.h   | 17 ++++++++++++-----
 3 files changed, 22 insertions(+), 15 deletions(-)

diff --git a/Makefile b/Makefile
index bbf2cb4..1003dcf 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
 all: sxiv
 
-VERSION = git-20110624
+VERSION = git-20110628
 
 CC = gcc
 DESTDIR =
diff --git a/main.c b/main.c
index 9c8cf14..1ff5c7e 100644
--- a/main.c
+++ b/main.c
@@ -241,7 +241,7 @@ int main(int argc, char **argv) {
 	}
 
 	filecnt = fileidx;
-	fileidx = options->startnum < filecnt ? options->startnum : filecnt - 1;
+	fileidx = options->startnum < filecnt ? options->startnum : 0;
 
 	win_init(&win);
 	img_init(&img, &win);
@@ -327,10 +327,11 @@ int run_command(const char *cline, Bool reload) {
 
 /* event handling */
 
-#define TO_WIN_RESIZE  75000
-#define TO_IMAGE_DRAG  1000
-#define TO_CURSOR_HIDE 1500000
-#define TO_THUMBS_LOAD 75000
+/* timeouts in milliseconds: */
+#define TO_WIN_RESIZE  75
+#define TO_IMAGE_DRAG  1
+#define TO_CURSOR_HIDE 1500
+#define TO_THUMBS_LOAD 200
 
 int timo_cursor;
 int timo_redraw;
@@ -723,7 +724,7 @@ void run() {
 				else
 					remove_file(tns.cnt, 0);
 				gettimeofday(&t1, 0);
-				if (TV_TO_DOUBLE(t1) - TV_TO_DOUBLE(t0) >= 0.25)
+				if (TIMEDIFF(&t1, &t0) >= TO_THUMBS_LOAD)
 					break;
 			}
 			if (tns.cnt == filecnt)
@@ -742,8 +743,7 @@ void run() {
 				timeout = timo_cursor;
 			else
 				timeout = timo_redraw;
-			tt.tv_sec = timeout / 1000000;
-			tt.tv_usec = timeout % 1000000;
+			MSEC_TO_TIMEVAL(timeout, &tt);
 			xfd = ConnectionNumber(win.env.dpy);
 			FD_ZERO(&fds);
 			FD_SET(xfd, &fds);
@@ -751,7 +751,7 @@ void run() {
 			if (!XPending(win.env.dpy))
 				select(xfd + 1, &fds, 0, 0, &tt);
 			gettimeofday(&t1, 0);
-			timeout = MIN((TV_TO_DOUBLE(t1) - TV_TO_DOUBLE(t0)) * 1000000, timeout);
+			timeout = MIN(TIMEDIFF(&t1, &t0), timeout);
 
 			/* timeouts fired? */
 			if (timo_cursor) {
diff --git a/util.h b/util.h
index c1e08a6..9e08bac 100644
--- a/util.h
+++ b/util.h
@@ -28,14 +28,21 @@
 #define MAX(a,b) ((a) > (b) ? (a) : (b))
 #define LEN(a)   (sizeof(a) / sizeof(a[0]))
 
-#define TV_TO_DOUBLE(x) ((double) ((x).tv_sec) + 0.000001 * \
-                         (double) ((x).tv_usec))
+#define TIMEDIFF(t1,t2) (((t1)->tv_sec - (t2)->tv_sec) * 1000 +  \
+                         ((t1)->tv_usec - (t2)->tv_usec) / 1000)
 
-#define TIMESPEC_TO_TIMEVAL(tv, ts) {      \
-		(tv)->tv_sec = (ts)->tv_sec;           \
-		(tv)->tv_usec = (ts)->tv_nsec / 1000;  \
+#define MSEC_TO_TIMEVAL(t,tv) {         \
+  (tv)->tv_sec = (t) / 1000;            \
+	(tv)->tv_usec = (t) % 1000 * 1000;    \
 }
 
+#ifndef TIMESPEC_TO_TIMEVAL
+#define TIMESPEC_TO_TIMEVAL(tv,ts) {    \
+  (tv)->tv_sec = (ts)->tv_sec;          \
+  (tv)->tv_usec = (ts)->tv_nsec / 1000; \
+}
+#endif
+
 typedef struct {
 	DIR *dir;
 	char *name;