Krolyxon
Commit 802c344

Branches

Refs →

nsxiv802c344

Check file timestamps before loading from cache

Author
Bert
Date
2011-01-31 15:51 +0100
Parent
16cc96e
Commit
802c3448793fdfd8255931235c40084558f7f515

+32 −17

4 files changed

  1. M Makefile +1 −1
  2. M image.c +22 −3
  3. M image.h +2 −0
  4. M main.c +7 −13
M Makefile View
@@ -1,6 +1,6 @@
11 all: sxiv
22
3−VERSION=git-20110130
3+VERSION=git-20110131
44
55 CC?=gcc
66 PREFIX?=/usr/local
M image.c View
@@ -52,22 +52,41 @@ void img_free(img_t* img) {
5252 imlib_free_image();
5353 }
5454
55+int img_check(const char *filename) {
56+ Imlib_Image *im;
57+
58+ if (!filename)
59+ return 0;
60+
61+ if (!(im = imlib_load_image(filename))) {
62+ WARN("could not open image: %s", filename);
63+ return 0;
64+ }
65+
66+ imlib_context_set_image(im);
67+ imlib_image_set_changes_on_disk();
68+ imlib_free_image();
69+
70+ return 1;
71+}
72+
5573 int img_load(img_t *img, const char *filename) {
5674 Imlib_Image *im;
5775
5876 if (!img || !filename)
59− return -1;
77+ return 0;
6078
6179 if (imlib_context_get_image())
6280 imlib_free_image();
6381
6482 if (!(im = imlib_load_image(filename))) {
6583 WARN("could not open image: %s", filename);
66− return -1;
84+ return 0;
6785 }
6886
6987 imlib_context_set_image(im);
7088 imlib_context_set_anti_alias(img->aa);
89+ imlib_image_set_changes_on_disk();
7190
7291 img->re = 0;
7392 img->checkpan = 0;
@@ -76,7 +95,7 @@ int img_load(img_t *img, const char *filename) {
7695 img->w = imlib_image_get_width();
7796 img->h = imlib_image_get_height();
7897
79− return 0;
98+ return 1;
8099 }
81100
82101 void img_check_pan(img_t *img, win_t *win) {
M image.h View
@@ -49,7 +49,9 @@ typedef struct img_s {
4949 void img_init(img_t*, win_t*);
5050 void img_free(img_t*);
5151
52+int img_check(const char*);
5253 int img_load(img_t*, const char*);
54+
5355 void img_render(img_t*, win_t*);
5456
5557 int img_fit(img_t*, win_t*);
M main.c View
@@ -102,7 +102,7 @@ int main(int argc, char **argv) {
102102 filecnt = 0;
103103
104104 for (i = 0; i < options->filecnt; ++i) {
105− if (!(img_load(&img, options->filenames[i]) < 0))
105+ if (img_check(options->filenames[i]))
106106 filenames[filecnt++] = options->filenames[i];
107107 }
108108
@@ -157,43 +157,37 @@ void on_keypress(XEvent *ev) {
157157 case XK_n:
158158 case XK_space:
159159 if (fileidx + 1 < filecnt) {
160− img_load(&img, filenames[++fileidx]);
161− changed = 1;
160+ changed = img_load(&img, filenames[++fileidx]);
162161 }
163162 break;
164163 case XK_p:
165164 case XK_BackSpace:
166165 if (fileidx > 0) {
167− img_load(&img, filenames[--fileidx]);
168− changed = 1;
166+ changed = img_load(&img, filenames[--fileidx]);
169167 }
170168 break;
171169 case XK_bracketleft:
172170 if (fileidx != 0) {
173171 fileidx = MAX(0, fileidx - 10);
174− img_load(&img, filenames[fileidx]);
175− changed = 1;
172+ changed = img_load(&img, filenames[fileidx]);
176173 }
177174 break;
178175 case XK_bracketright:
179176 if (fileidx != filecnt - 1) {
180177 fileidx = MIN(fileidx + 10, filecnt - 1);
181− img_load(&img, filenames[fileidx]);
182− changed = 1;
178+ changed = img_load(&img, filenames[fileidx]);
183179 }
184180 break;
185181 case XK_g:
186182 if (fileidx != 0) {
187183 fileidx = 0;
188− img_load(&img, filenames[fileidx]);
189− changed = 1;
184+ changed = img_load(&img, filenames[fileidx]);
190185 }
191186 break;
192187 case XK_G:
193188 if (fileidx != filecnt - 1) {
194189 fileidx = filecnt - 1;
195− img_load(&img, filenames[fileidx]);
196− changed = 1;
190+ changed = img_load(&img, filenames[fileidx]);
197191 }
198192 break;
199193