diff options
author | Daniel Friesel <derf@finalrewind.org> | 2011-09-01 11:46:35 +0200 |
---|---|---|
committer | Daniel Friesel <derf@finalrewind.org> | 2011-09-01 11:46:35 +0200 |
commit | ed5f55e967152ff6c7308858cb019bea2015d314 (patch) | |
tree | 217b55a4dc3e10e325c8b22f8e4408461b5e710a | |
parent | 910e2e3d219626be260f17bbdc0a113d04037387 (diff) |
feh_reload_image: Try to reload unloadable (still existing) images ad infinitum
This commit removes the feh_file_remove_from_list call from feh_reload_image.
We can safely do this because if the file itself was removed, cb_reload_timer
will take care of updating the filelist, and in all other cases it is intended
to leave the image in the filelist and retry.
A warning will be displayed in the image if the reload failed.
-rw-r--r-- | ChangeLog | 2 | ||||
-rw-r--r-- | man/feh.pre | 6 | ||||
-rw-r--r-- | src/slideshow.c | 9 |
3 files changed, 13 insertions, 4 deletions
@@ -9,6 +9,8 @@ git HEAD * The --filelist option now supports /dev/stdin (or "-" as shortcut) * Several Xinerama fixes, only --fullscreen on screen != 0 is still broken <https://github.com/derf/feh/issues/5> + * Fix segfault when reloading no longer loadable (but still existing) images. + feh will now display a warning and try to reload ad infinitum Tue, 16 Aug 2011 22:48:06 +0200 Daniel Friesel <derf@finalrewind.org> diff --git a/man/feh.pre b/man/feh.pre index 07126a0..ffb0803 100644 --- a/man/feh.pre +++ b/man/feh.pre @@ -412,6 +412,12 @@ Reload filelist and current image after seconds. Useful for viewing HTTP webcams or frequently changing directories. .Pq Note that the filelist reloading is still experimental. . +.Pp +. +If an image is removed, feh will either show the next one or quit. However, +if an image still exists, but can no longer be loaded, feh will continue to +try loading it. +. .It Cm -n , --reverse . Reverse the sort order. Use this to invert the order of the filelist. diff --git a/src/slideshow.c b/src/slideshow.c index ba9e028..511d29c 100644 --- a/src/slideshow.c +++ b/src/slideshow.c @@ -149,6 +149,7 @@ void feh_reload_image(winwidget w, int resize, int force_new) if (!w->file) { im_weprintf(w, "couldn't reload, this image has no file associated with it."); + winwidget_render_image(w, 0, 0); return; } @@ -166,20 +167,17 @@ void feh_reload_image(winwidget w, int resize, int force_new) old_w = gib_imlib_image_get_width(w->im); old_h = gib_imlib_image_get_height(w->im); - /* force imlib2 not to cache */ - winwidget_free_image(w); - /* if the image has changed in dimensions - we gotta resize */ if ((feh_load_image(&tmp, FEH_FILE(w->file->data))) == 0) { if (force_new) { eprintf("failed to reload image\n"); } else { im_weprintf(w, "Couldn't reload image. Is it still there?"); + winwidget_render_image(w, 0, 0); } winwidget_rename(w, title); free(title); free(new_title); - filelist = feh_file_remove_from_list(filelist, w->file); return; } @@ -187,6 +185,9 @@ void feh_reload_image(winwidget w, int resize, int force_new) (old_h != gib_imlib_image_get_height(tmp)))) resize = 1; + /* force imlib2 not to cache */ + winwidget_free_image(w); + w->im = tmp; winwidget_reset_image(w); |