Write cache file for thumbnail directly after creating it
This commit is contained in:
parent
1d0f51f95a
commit
f93f4d887c
20
thumbs.c
20
thumbs.c
@ -47,17 +47,12 @@ void tns_init(tns_t *tns, int cnt) {
|
|||||||
|
|
||||||
void tns_free(tns_t *tns, win_t *win) {
|
void tns_free(tns_t *tns, win_t *win) {
|
||||||
int i;
|
int i;
|
||||||
Bool cache;
|
|
||||||
|
|
||||||
if (!tns || !tns->thumbs)
|
if (!tns || !tns->thumbs)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
cache = tns_cache_enabled();
|
|
||||||
|
|
||||||
for (i = 0; i < tns->cnt; ++i) {
|
for (i = 0; i < tns->cnt; ++i) {
|
||||||
if (tns->thumbs[i].im) {
|
if (tns->thumbs[i].im) {
|
||||||
if (cache)
|
|
||||||
tns_cache_write(&tns->thumbs[i], False);
|
|
||||||
imlib_context_set_image(tns->thumbs[i].im);
|
imlib_context_set_image(tns->thumbs[i].im);
|
||||||
imlib_free_image();
|
imlib_free_image();
|
||||||
}
|
}
|
||||||
@ -69,6 +64,7 @@ void tns_free(tns_t *tns, win_t *win) {
|
|||||||
|
|
||||||
void tns_load(tns_t *tns, win_t *win, int n, const char *filename) {
|
void tns_load(tns_t *tns, win_t *win, int n, const char *filename) {
|
||||||
int w, h;
|
int w, h;
|
||||||
|
int use_cache, cached = 0;
|
||||||
float z, zw, zh;
|
float z, zw, zh;
|
||||||
thumb_t *t;
|
thumb_t *t;
|
||||||
Imlib_Image *im;
|
Imlib_Image *im;
|
||||||
@ -88,8 +84,12 @@ void tns_load(tns_t *tns, win_t *win, int n, const char *filename) {
|
|||||||
imlib_free_image();
|
imlib_free_image();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((tns_cache_enabled() && (im = tns_cache_load(filename))) ||
|
if ((use_cache = tns_cache_enabled())) {
|
||||||
(im = imlib_load_image(filename)))
|
if ((im = tns_cache_load(filename)))
|
||||||
|
cached = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cached || (im = imlib_load_image(filename)))
|
||||||
imlib_context_set_image(im);
|
imlib_context_set_image(im);
|
||||||
else
|
else
|
||||||
imlib_context_set_image(im_invalid);
|
imlib_context_set_image(im_invalid);
|
||||||
@ -115,6 +115,8 @@ void tns_load(tns_t *tns, win_t *win, int n, const char *filename) {
|
|||||||
die("could not allocate memory");
|
die("could not allocate memory");
|
||||||
if (im)
|
if (im)
|
||||||
imlib_free_image_and_decache();
|
imlib_free_image_and_decache();
|
||||||
|
if (use_cache && !cached)
|
||||||
|
tns_cache_write(t, False);
|
||||||
|
|
||||||
tns->dirty = 1;
|
tns->dirty = 1;
|
||||||
}
|
}
|
||||||
@ -334,7 +336,7 @@ char* tns_cache_filename(const char *filename) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
len = strlen(abspath);
|
len = strlen(abspath);
|
||||||
for (i = 1; i < len; ++i) {
|
for (i = 0; i < len; ++i) {
|
||||||
if (abspath[i] == '/')
|
if (abspath[i] == '/')
|
||||||
abspath[i] = '%';
|
abspath[i] = '%';
|
||||||
}
|
}
|
||||||
@ -392,7 +394,7 @@ void tns_cache_write(thumb_t *t, Bool force) {
|
|||||||
imlib_save_image_with_error_return(cfile, &err);
|
imlib_save_image_with_error_return(cfile, &err);
|
||||||
|
|
||||||
if (err) {
|
if (err) {
|
||||||
warn("could not cache thumbnail:", t->filename);
|
warn("could not cache thumbnail: %s", t->filename);
|
||||||
} else {
|
} else {
|
||||||
TIMESPEC_TO_TIMEVAL(×[0], &fstats.st_atim);
|
TIMESPEC_TO_TIMEVAL(×[0], &fstats.st_atim);
|
||||||
TIMESPEC_TO_TIMEVAL(×[1], &fstats.st_mtim);
|
TIMESPEC_TO_TIMEVAL(×[1], &fstats.st_mtim);
|
||||||
|
2
util.c
2
util.c
@ -123,7 +123,7 @@ char* absolute_path(const char *filename) {
|
|||||||
twd = (char*) s_realloc(twd, len);
|
twd = (char*) s_realloc(twd, len);
|
||||||
}
|
}
|
||||||
if (chdir(cwd))
|
if (chdir(cwd))
|
||||||
die("could not revert to working directory");
|
die("could not revert to prior working directory");
|
||||||
if (!s)
|
if (!s)
|
||||||
goto error;
|
goto error;
|
||||||
dir = twd;
|
dir = twd;
|
||||||
|
Loading…
Reference in New Issue
Block a user