Immediately respond to events while loading thumbs
This commit is contained in:
parent
e2889ab891
commit
b828b55419
17
main.c
17
main.c
|
@ -22,6 +22,7 @@
|
|||
#include <dirent.h>
|
||||
#include <sys/select.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
|
@ -469,7 +470,7 @@ void on_motionnotify(XMotionEvent *mev) {
|
|||
void run() {
|
||||
int xfd;
|
||||
fd_set fds;
|
||||
struct timeval t;
|
||||
struct timeval t, t0;
|
||||
XEvent ev;
|
||||
|
||||
timeout = 0;
|
||||
|
@ -477,12 +478,22 @@ void run() {
|
|||
while (1) {
|
||||
if (mode == MODE_THUMBS && tns_loaded < filecnt) {
|
||||
win_set_cursor(&win, CURSOR_WATCH);
|
||||
gettimeofday(&t0, 0);
|
||||
|
||||
while (!XPending(win.env.dpy) && tns_loaded < filecnt) {
|
||||
tns_load(&tns, &win, filenames[tns_loaded++]);
|
||||
tns_render(&tns, &win);
|
||||
gettimeofday(&t, 0);
|
||||
if (TV_TO_DOUBLE(t) - TV_TO_DOUBLE(t0) >= 0.25)
|
||||
break;
|
||||
}
|
||||
if (tns_loaded == filecnt)
|
||||
win_set_cursor(&win, CURSOR_ARROW);
|
||||
else if (!XPending(win.env.dpy))
|
||||
if (!XPending(win.env.dpy)) {
|
||||
tns_render(&tns, &win);
|
||||
continue;
|
||||
} else {
|
||||
timeout = 1;
|
||||
}
|
||||
} else if (timeout) {
|
||||
t.tv_sec = 0;
|
||||
t.tv_usec = 75000;
|
||||
|
|
2
thumbs.c
2
thumbs.c
|
@ -85,6 +85,8 @@ void tns_render(tns_t *tns, win_t *win) {
|
|||
if (!tns || !win)
|
||||
return;
|
||||
|
||||
printf("tns_render()\n");
|
||||
|
||||
tns->cols = win->w / thumb_dim;
|
||||
tns->rows = win->h / thumb_dim;
|
||||
|
||||
|
|
Loading…
Reference in a new issue