From 8877e171083c58ffe5af2cc5534f3ea11160a8da Mon Sep 17 00:00:00 2001 From: Přemysl Eric Janouch Date: Sat, 22 Jan 2022 20:38:49 +0100 Subject: Default to gdk-pixbuf even for Wuffs formats --- fiv-io.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) (limited to 'fiv-io.c') diff --git a/fiv-io.c b/fiv-io.c index 4189917..b9ca4f1 100644 --- a/fiv-io.c +++ b/fiv-io.c @@ -2517,21 +2517,25 @@ fiv_io_open_from_data(const char *data, size_t len, const gchar *uri, g_clear_error(error); } #endif // HAVE_LIBTIFF -------------------------------------------------------- -#ifdef HAVE_GDKPIXBUF // ------------------------------------------------------ - // This is only used as a last resort, the rest above is special-cased. - if ((surface = open_gdkpixbuf(data, len, profile, error))) - break; - if (error && (*error)->code != GDK_PIXBUF_ERROR_UNKNOWN_TYPE) - break; - if (error) { - g_debug("%s", (*error)->message); + set_error(error, "unsupported file type"); + } + +#ifdef HAVE_GDKPIXBUF // ------------------------------------------------------ + // This is used as a last resort, the rest above is special-cased. + // Wuffs #71 and similar concerns make us default to it in all cases. + if (!surface) { + GError *err = NULL; + if ((surface = open_gdkpixbuf(data, len, profile, &err))) { + g_clear_error(error); + } else if (err->code == GDK_PIXBUF_ERROR_UNKNOWN_TYPE) { + g_error_free(err); + } else { g_clear_error(error); + g_propagate_error(error, err); } -#endif // HAVE_GDKPIXBUF ------------------------------------------------------ - - set_error(error, "unsupported file type"); } +#endif // HAVE_GDKPIXBUF ------------------------------------------------------ // gdk-pixbuf only gives out this single field--cater to its limitations, // since we'd really like to have it. -- cgit v1.2.3-54-g00ecf