fix: loading old frames due to multi-frame cache (#437)
by default imlib2 doesn't check the file's timestamp to avoid disk activity when loading from cache. however, this ends up breaking our autoreload functionality on multi-frame images. the reason why single frame images weren't broken was because `img_load()` calls `imlib_image_set_changes_on_disk()`, which tells imlib2 to check the timestamp before loading from cache. do the same thing for the multi-frame loader as well. additionally add a comment to img_load() explaining what's going on. Closes: https://codeberg.org/nsxiv/nsxiv/issues/436 Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/437 Reviewed-by: eylles <eylles@noreply.codeberg.org>
This commit is contained in:
parent
5c6745436f
commit
4b67816eae
4
image.c
4
image.c
|
@ -506,6 +506,7 @@ static bool img_load_multiframe(img_t *img, const fileinfo_t *file)
|
|||
}
|
||||
|
||||
imlib_context_set_image(frame);
|
||||
imlib_image_set_changes_on_disk(); /* see img_load() for rationale */
|
||||
imlib_image_get_frame_info(&finfo);
|
||||
assert(finfo.frame_count == (int)fcnt);
|
||||
assert(finfo.canvas_w == img->w && finfo.canvas_h == img->h);
|
||||
|
@ -579,6 +580,9 @@ bool img_load(img_t *img, const fileinfo_t *file)
|
|||
if ((img->im = img_open(file)) == NULL)
|
||||
return false;
|
||||
|
||||
/* ensure that the image's timestamp is checked when loading from cache
|
||||
* to avoid issues like: https://codeberg.org/nsxiv/nsxiv/issues/436
|
||||
*/
|
||||
imlib_image_set_changes_on_disk();
|
||||
|
||||
/* since v1.7.5, Imlib2 can parse exif orientation from jpeg files.
|
||||
|
|
Loading…
Reference in New Issue