diff options
-rw-r--r-- | TODO | 4 | ||||
-rw-r--r-- | src/collage.c | 1 | ||||
-rw-r--r-- | src/filelist.c | 2 | ||||
-rw-r--r-- | src/index.c | 1 | ||||
-rw-r--r-- | src/slideshow.c | 23 | ||||
-rw-r--r-- | src/thumbnail.c | 1 |
6 files changed, 9 insertions, 23 deletions
@@ -6,10 +6,6 @@ having to focus it. Have to be a bit careful with this but could be useful. key/option/signal/timeout to totally reload filelist (rescan directories etc) -The "No more slides left in show" bug was fixed, but now there's a rare -condition (viewing a few images, removing them externally while viewing, -then resizing the window) causing imlib2 warnings. - <keypad begin> antialieses the image, but doing that automatically upon key release would be better. However, I couldn't find a way to do that so far. Even when holding down a key, everytime the eventloop runs I get a diff --git a/src/collage.c b/src/collage.c index e76f8ae..3e03828 100644 --- a/src/collage.c +++ b/src/collage.c @@ -119,7 +119,6 @@ void init_collage_mode(void) file = FEH_FILE(l->data); if (last) { filelist = feh_file_remove_from_list(filelist, last); - filelist_len--; last = NULL; } D(3, ("About to load image %s\n", file->filename)); diff --git a/src/filelist.c b/src/filelist.c index da17f15..2eb43af 100644 --- a/src/filelist.c +++ b/src/filelist.c @@ -113,6 +113,8 @@ gib_list *feh_file_remove_from_list(gib_list * list, gib_list * l) { D_ENTER(4); feh_file_free(FEH_FILE(l->data)); + D(4, ("filelist_len %d -> %d\n", filelist_len, filelist_len - 1)); + filelist_len--; D_RETURN(4, gib_list_remove(list, l)); } diff --git a/src/index.c b/src/index.c index 5c13d19..c7c0a84 100644 --- a/src/index.c +++ b/src/index.c @@ -306,7 +306,6 @@ void init_index_mode(void) file = FEH_FILE(l->data); if (last) { filelist = feh_file_remove_from_list(filelist, last); - filelist_len--; last = NULL; } D(4, ("About to load image %s\n", file->filename)); diff --git a/src/slideshow.c b/src/slideshow.c index 1a3ffe8..314374c 100644 --- a/src/slideshow.c +++ b/src/slideshow.c @@ -50,7 +50,6 @@ void init_slideshow_mode(void) file = FEH_FILE(l->data); if (last) { filelist = feh_file_remove_from_list(filelist, last); - filelist_len--; last = NULL; } current_file = l; @@ -128,6 +127,7 @@ void feh_reload_image(winwidget w, int resize, int force_new) winwidget_rename(w, title); free(title); free(new_title); + filelist = feh_file_remove_from_list(filelist, w->file); D_RETURN_(4); } if (force_new) { @@ -244,7 +244,6 @@ void slideshow_change_image(winwidget winwid, int change) if (last) { filelist = feh_file_remove_from_list(filelist, last); - filelist_len--; last = NULL; } s = slideshow_create_name(FEH_FILE(current_file->data)); @@ -268,18 +267,12 @@ void slideshow_change_image(winwidget winwid, int change) } else last = current_file; } - if (!success) { - /* We get here if three files in a row could not be loaded. - * However, it seems that this piece of code is never reached when feh - * would otherwise fail; it's only executed in the aforementioned case, - * causing slideshows to exit although there still are lots of working slides. - * - * So far, there is one known case were we should exit here: - * When viewing a set of files, externally removing all of them and then resizing - * the window in feh, feh will print lots of imlib errors and eventually segfault. - */ - weprintf("No more slides in show?"); - } + if (last) + filelist = feh_file_remove_from_list(filelist, last); + + if (filelist_len == 0) + eprintf("No more slides in show"); + if (opt.slideshow_delay >= 0.0) feh_add_timer(cb_slide_timer, winwid, opt.slideshow_delay, "SLIDE_CHANGE"); D_RETURN_(4); @@ -445,7 +438,6 @@ void feh_filelist_image_remove(winwidget winwid, char do_delete) doomed = current_file; slideshow_change_image(winwid, SLIDE_NEXT); - filelist_len--; if (do_delete) filelist = feh_file_rm_and_free(filelist, doomed); else @@ -460,7 +452,6 @@ void feh_filelist_image_remove(winwidget winwid, char do_delete) free(s); } else if ((winwid->type == WIN_TYPE_SINGLE) || (winwid->type == WIN_TYPE_THUMBNAIL_VIEWER)) { - filelist_len--; if (do_delete) filelist = feh_file_rm_and_free(filelist, winwid->file); else diff --git a/src/thumbnail.c b/src/thumbnail.c index a2246ac..425fa8c 100644 --- a/src/thumbnail.c +++ b/src/thumbnail.c @@ -179,7 +179,6 @@ void init_thumbnail_mode(void) file = FEH_FILE(l->data); if (last) { filelist = feh_file_remove_from_list(filelist, last); - filelist_len--; last = NULL; } D(4, ("About to load image %s\n", file->filename)); |