First things for thumbnail caching
This commit is contained in:
parent
9fcf2c8f34
commit
83bdf67d51
33
thumbs.c
33
thumbs.c
|
@ -18,6 +18,9 @@
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "thumbs.h"
|
#include "thumbs.h"
|
||||||
|
@ -26,6 +29,9 @@
|
||||||
extern Imlib_Image *im_invalid;
|
extern Imlib_Image *im_invalid;
|
||||||
const int thumb_dim = THUMB_SIZE + 10;
|
const int thumb_dim = THUMB_SIZE + 10;
|
||||||
|
|
||||||
|
int tns_cache_enabled();
|
||||||
|
void tns_cache_write(thumb_t*, Bool);
|
||||||
|
|
||||||
void tns_init(tns_t *tns, int cnt) {
|
void tns_init(tns_t *tns, int cnt) {
|
||||||
if (!tns)
|
if (!tns)
|
||||||
return;
|
return;
|
||||||
|
@ -39,12 +45,17 @@ 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();
|
||||||
}
|
}
|
||||||
|
@ -84,10 +95,12 @@ void tns_load(tns_t *tns, win_t *win, int n, const char *filename) {
|
||||||
h = imlib_image_get_height();
|
h = imlib_image_get_height();
|
||||||
|
|
||||||
if (im) {
|
if (im) {
|
||||||
|
t->filename = filename;
|
||||||
zw = (float) THUMB_SIZE / (float) w;
|
zw = (float) THUMB_SIZE / (float) w;
|
||||||
zh = (float) THUMB_SIZE / (float) h;
|
zh = (float) THUMB_SIZE / (float) h;
|
||||||
z = MIN(zw, zh);
|
z = MIN(zw, zh);
|
||||||
} else {
|
} else {
|
||||||
|
t->filename = NULL;
|
||||||
z = 1.0;
|
z = 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -278,3 +291,23 @@ int tns_translate(tns_t *tns, int x, int y) {
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int tns_cache_enabled() {
|
||||||
|
int len, ret = 0;
|
||||||
|
char *cpath, *homedir;
|
||||||
|
struct stat stats;
|
||||||
|
|
||||||
|
if ((homedir = getenv("HOME"))) {
|
||||||
|
len = strlen(homedir) + 10;
|
||||||
|
cpath = (char*) s_malloc(len * sizeof(char));
|
||||||
|
snprintf(cpath, len, "%s/.sxiv", homedir);
|
||||||
|
ret = !stat(cpath, &stats) && S_ISDIR(stats.st_mode) &&
|
||||||
|
!access(cpath, W_OK);
|
||||||
|
free(cpath);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
void tns_cache_write(thumb_t *t, Bool force) {
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue