summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--main.c18
-rw-r--r--util.h17
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;