Fix loading huge JPEGs

They fell back to gdk-pixbuf, then misrendered in the thumbnailer,
and crashed the program when loaded directly.

The second best we can do is scale them down, right after tiling,
which is a complex feature to add.
This commit is contained in:
2022-03-09 17:58:19 +01:00
parent da507edd05
commit 5c34a6846a
2 changed files with 31 additions and 0 deletions

View File

@@ -163,6 +163,15 @@ adjust_thumbnail(cairo_surface_t *thumbnail, double row_height)
cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
cairo_paint(cr);
// Note that this doesn't get triggered with oversize input surfaces,
// even though nothing will be rendered.
if (cairo_surface_status(thumbnail) != CAIRO_STATUS_SUCCESS ||
cairo_surface_status(scaled) != CAIRO_STATUS_SUCCESS ||
cairo_pattern_status(pattern) != CAIRO_STATUS_SUCCESS ||
cairo_status(cr) != CAIRO_STATUS_SUCCESS)
g_warning("thumbnail scaling failed");
cairo_destroy(cr);
return scaled;
}