Corrected thumbnail loading and timeout handling

This commit is contained in:
Bert 2011-09-02 15:56:03 +02:00
parent 1e84773276
commit dcd04e526d
1 changed files with 21 additions and 21 deletions

42
main.c
View File

@ -357,31 +357,31 @@ void run() {
redraw(); redraw();
while (1) { while (1) {
if (!XPending(win.env.dpy)) { while (mode == MODE_THUMB && tns.cnt < filecnt &&
!XPending(win.env.dpy))
{
/* load thumbnails */ /* load thumbnails */
while (mode == MODE_THUMB && tns.cnt < filecnt) { win_set_cursor(&win, CURSOR_WATCH);
win_set_cursor(&win, CURSOR_WATCH); set_timeout(redraw, TO_REDRAW_THUMBS, 0);
if (tns_load(&tns, tns.cnt, &files[tns.cnt], False, False)) if (tns_load(&tns, tns.cnt, &files[tns.cnt], False, False))
tns.cnt++; tns.cnt++;
else else
remove_file(tns.cnt, 0); remove_file(tns.cnt, 0);
if (tns.cnt == filecnt) { if (tns.cnt == filecnt) {
redraw(); redraw();
win_set_cursor(&win, CURSOR_ARROW); win_set_cursor(&win, CURSOR_ARROW);
} else { } else {
set_timeout(redraw, TO_REDRAW_THUMBS, 0); check_timeouts(NULL);
check_timeouts(NULL);
}
} }
}
if (!XPending(win.env.dpy) && check_timeouts(&timeout)) {
/* handle timeouts */ /* handle timeouts */
if (check_timeouts(&timeout)) { xfd = ConnectionNumber(win.env.dpy);
xfd = ConnectionNumber(win.env.dpy); FD_ZERO(&fds);
FD_ZERO(&fds); FD_SET(xfd, &fds);
FD_SET(xfd, &fds); if (!select(xfd + 1, &fds, 0, 0, &timeout))
if (!select(xfd + 1, &fds, 0, 0, &timeout)) check_timeouts(NULL);
check_timeouts(NULL);
}
} }
if (!XNextEvent(win.env.dpy, &ev)) { if (!XNextEvent(win.env.dpy, &ev)) {