Commit 31c67831 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Proper workaround for broken gib_imlib_save_image_with_error_return

parent d3709b89
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -158,6 +158,8 @@ void real_loadables_mode(int loadable);
void feh_reload_image(winwidget w, int resize, int force_new);
void feh_filelist_image_remove(winwidget winwid, char do_delete);
void slideshow_save_image(winwidget win);
void ungib_imlib_save_image_with_error_return(Imlib_Image im, char *file,
	Imlib_Load_Error * error_return);
void feh_edit_inplace(winwidget w, int orientation);
void feh_edit_inplace_lossless(winwidget w, int orientation);
gib_list *feh_wrap_string(char *text, int wrap_width, Imlib_Font fn, gib_style * style);
+26 −0
Original line number Diff line number Diff line
@@ -129,6 +129,32 @@ int feh_load_image_char(Imlib_Image * im, char *filename)
	return(i);
}

/*
 * XXX gib_imlib_save_image_with_error_return breaks with *.END and
 * similar because it tries to set the image format, which only works
 * with .end .
 * So we leave that part out.
 */
void ungib_imlib_save_image_with_error_return(Imlib_Image im, char *file,
	Imlib_Load_Error * error_return)
{
	char *tmp;
	imlib_context_set_image(im);
	tmp = strrchr(file, '.');
	if (tmp) {
		char *p, *pp;
		p = gib_estrdup(tmp + 1);
		pp = p;
		while(*pp) {
			*pp = tolower(*pp);
			pp++;
		}
		imlib_image_set_format(p);
		gib_efree(p);
	}
	imlib_save_image_with_error_return(file, error_return);
}

int feh_load_image(Imlib_Image * im, feh_file * file)
{
	Imlib_Load_Error err;
+1 −7
Original line number Diff line number Diff line
@@ -594,13 +594,7 @@ void slideshow_save_image(winwidget win)
	if (opt.verbose)
		printf("saving image to filename '%s'\n", tmpname);

	/* XXX gib_imlib_save_image_with_error_return breaks with *.XXX and
	 * similar because it tries to set the image format, which only works
	 * with .xxx .
	 * So we leave that part out.
	 */
	imlib_context_set_image(win->im);
	imlib_save_image_with_error_return(tmpname, &err);
	ungib_imlib_save_image_with_error_return(win->im, tmpname, &err);

	if (err)
		im_weprintf(win, "Can't save image %s:", tmpname);