summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO4
-rw-r--r--src/collage.c1
-rw-r--r--src/filelist.c2
-rw-r--r--src/index.c1
-rw-r--r--src/slideshow.c23
-rw-r--r--src/thumbnail.c1
6 files changed, 9 insertions, 23 deletions
diff --git a/TODO b/TODO
index 054f5fe..bc90f0e 100644
--- a/TODO
+++ b/TODO
@@ -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));