Fix thumbnailing with the GdkPixbuf loader
This commit is contained in:
parent
b308b5da18
commit
41b5ddc744
16
fiv-io.c
16
fiv-io.c
@ -3107,10 +3107,20 @@ open_gdkpixbuf(
|
|||||||
gdk_pixbuf_get_bits_per_sample(pixbuf) == 8;
|
gdk_pixbuf_get_bits_per_sample(pixbuf) == 8;
|
||||||
|
|
||||||
cairo_surface_t *surface = NULL;
|
cairo_surface_t *surface = NULL;
|
||||||
if (custom_argb32)
|
if (custom_argb32) {
|
||||||
surface = load_gdkpixbuf_argb32_unpremultiplied(pixbuf);
|
surface = load_gdkpixbuf_argb32_unpremultiplied(pixbuf);
|
||||||
else
|
} else {
|
||||||
surface = gdk_cairo_surface_create_from_pixbuf(pixbuf, 1, NULL);
|
// Don't depend on GDK being initialized, to speed up thumbnailing
|
||||||
|
// (calling gdk_cairo_surface_create_from_pixbuf() would).
|
||||||
|
cairo_surface_t *dummy =
|
||||||
|
cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1, 1);
|
||||||
|
cairo_t *cr = cairo_create(dummy);
|
||||||
|
cairo_surface_destroy(dummy);
|
||||||
|
gdk_cairo_set_source_pixbuf(cr, pixbuf, 0, 0);
|
||||||
|
(void) cairo_pattern_get_surface(cairo_get_source(cr), &surface);
|
||||||
|
cairo_surface_reference(surface);
|
||||||
|
cairo_destroy(cr);
|
||||||
|
}
|
||||||
|
|
||||||
cairo_status_t surface_status = cairo_surface_status(surface);
|
cairo_status_t surface_status = cairo_surface_status(surface);
|
||||||
if (surface_status != CAIRO_STATUS_SUCCESS) {
|
if (surface_status != CAIRO_STATUS_SUCCESS) {
|
||||||
|
Loading…
Reference in New Issue
Block a user