diff options
-rw-r--r-- | image.c | 22 |
1 files changed, 15 insertions, 7 deletions
@@ -207,7 +207,7 @@ drawImage() if (support_remote_image) { #if 0 fprintf(stderr,"file %s x %d y %d w %d h %d sx %d sy %d sw %d sh %d (ppc %d ppl %d)\n", - getenv("WINDOWID") ? i->cache->file : i->cache->url, + (getenv("WINDOWID") && i->cache->touch) ? i->cache->file : i->cache->url, i->x, i->y, i->cache->width > 0 ? i->cache->width : 0, i->cache->height > 0 ? i->cache->height : 0, @@ -217,7 +217,7 @@ drawImage() put_image( #if 1 /* XXX I don't know why but sometimes i->cache->file doesn't exist. */ - getenv("WINDOWID") && (stat(i->cache->file,&st) == 0) ? + (getenv("WINDOWID") && i->cache->touch && stat(i->cache->file,&st) == 0) ? /* local */ i->cache->file : /* remote */ i->cache->url, #else i->cache->url, @@ -419,7 +419,7 @@ loadImage(Buffer *buf, int flag) } for (i = 0; i < n_load_image; i++) { cache = image_cache[i]; - if (!cache) + if (!cache || !cache->touch) continue; if (lstat(cache->touch, &st)) continue; @@ -450,7 +450,7 @@ loadImage(Buffer *buf, int flag) for (i = (buf != image_buffer) ? 0 : maxLoadImage; i < n_load_image; i++) { cache = image_cache[i]; - if (!cache) + if (!cache || !cache->touch) continue; if (cache->pid) { kill(cache->pid, SIGKILL); @@ -505,6 +505,9 @@ loadImage(Buffer *buf, int flag) break; } image_cache[i] = cache; + if (!cache->touch) { + continue; + } flush_tty(); #ifdef DONT_CALL_GC_AFTER_FORK @@ -585,7 +588,6 @@ getImage(Image * image, ParsedURL *current, int flag) cache->url = image->url; cache->current = current; cache->file = tmpfname(TMPF_DFL, image->ext)->ptr; - cache->touch = tmpfname(TMPF_DFL, NULL)->ptr; cache->pid = 0; cache->index = 0; cache->loaded = IMG_FLAG_UNLOADED; @@ -595,9 +597,15 @@ getImage(Image * image, ParsedURL *current, int flag) if (image->height > 0 && image->height % pixel_per_line_i > 0) image->height += (pixel_per_line_i - image->height % pixel_per_line_i); - - if (! getenv("WINDOWID") && image->height > 0 && image->width > 0) + if (image->height > 0 && image->width > 0) { cache->loaded = IMG_FLAG_LOADED; + } + } + if (cache->loaded == IMG_FLAG_UNLOADED) { + cache->touch = tmpfname(TMPF_DFL, NULL)->ptr; + } + else { + cache->touch = NULL; } cache->width = image->width ; |