Commit 04690171 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

feh_reload_image: Fix regression of old caching issue (closes #63)

This was broken by the changes allowing --reload to retry ad infinitum.

Now force_new is used to decide whether or not to work around the Imlib2
caching issue.  Because of this, a few feh_reload_image calls needed to be
changed.
parent f1963a49
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -114,7 +114,7 @@ static void feh_event_handle_ButtonPress(XEvent * ev)
				- winwid->im_y) / winwid->old_zoom;
	} else if (ev->xbutton.button == opt.reload_button) {
		D(("Reload Button Press event\n"));
			feh_reload_image(winwid, 0, 0);
			feh_reload_image(winwid, 0, 1);
	} else if (ev->xbutton.button == opt.prev_button) {
		D(("Prev Button Press event\n"));
		if (winwid->type == WIN_TYPE_SLIDESHOW)
+1 −1
Original line number Diff line number Diff line
@@ -1302,7 +1302,7 @@ void feh_menu_cb(feh_menu * m, feh_menu_item * i, int action, void *data)
			winwidget_render_image(m->fehwin, 1, 0);
			break;
		case CB_RELOAD:
			feh_reload_image(m->fehwin, 0, 0);
			feh_reload_image(m->fehwin, 0, 1);
			break;
		case CB_REMOVE:
			feh_filelist_image_remove(m->fehwin, 0);
+13 −5
Original line number Diff line number Diff line
@@ -171,11 +171,19 @@ 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);

	/* if the image has changed in dimensions - we gotta resize */
	/*
	 * If we don't free the old image before loading the new one, Imlib2's
	 * caching will get in our way.
	 * However, if --reload is used (force_new == 0), we want to continue if
	 * the new image cannot be loaded, so we must not free the old image yet.
	 */
	if (force_new)
		winwidget_free_image(w);

	if ((feh_load_image(&tmp, FEH_FILE(w->file->data))) == 0) {
		if (force_new) {
		if (force_new)
			eprintf("failed to reload image\n");
		} else {
		else {
			im_weprintf(w, "Couldn't reload image. Is it still there?");
			winwidget_render_image(w, 0, 0);
		}
@@ -189,7 +197,7 @@ 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 */
	if (!force_new)
		winwidget_free_image(w);

	w->im = tmp;
+1 −1
Original line number Diff line number Diff line
@@ -922,7 +922,7 @@ void feh_thumbnail_show_fullsize(feh_file *thumbfile)
		free(thumbwin->file);
		thumbwin->file = gib_list_add_front(NULL, thumbfile);
		winwidget_rename(thumbwin, s);
		feh_reload_image(thumbwin, 1, 0);
		feh_reload_image(thumbwin, 1, 1);
	}
}