From 402dbd1e1ff5c33fe9061dd362d3b47a10ac5658 Mon Sep 17 00:00:00 2001 From: Pip Cet Date: Mon, 24 Jun 2019 16:20:19 +0000 Subject: [PATCH] minor things --- src/image.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/image.c b/src/image.c index 924a188b4a..ce5534b07a 100644 --- a/src/image.c +++ b/src/image.c @@ -9619,15 +9619,19 @@ svg_load_image (struct frame *f, struct image *img, char *contents, cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height); + if (cairo_surface_status (surface) != CAIRO_STATUS_SUCCESS) + goto rsvg_error; cairo_t *cr = cairo_create (surface); cairo_set_source_rgb (cr, background.red / 65535.0, background.green / 65535.0, background.blue / 65535.0); cairo_paint (cr); + cairo_set_source_rgb (cr, 0.0, 0.0, 0.0); rsvg_handle_render_cairo (rsvg_handle, cr); cairo_destroy (cr); g_object_unref (rsvg_handle); + cairo_surface_flush (surface); unsigned char *data = cairo_image_surface_get_data (surface); int stride = cairo_image_surface_get_stride (surface); for (int y = 0; y < height; ++y) @@ -9636,9 +9640,9 @@ svg_load_image (struct frame *f, struct image *img, char *contents, for (int x = 0; x < width; ++x) { guint32 rgb = *pixels++; - int red = ((rgb >> 16) & 0xff) << 8; - int green = ((rgb >> 8) & 0xff) << 8; - int blue = (rgb & 0xff) << 8; + int red = ((rgb >> 16) & 0xff) * 0x101; + int green = ((rgb >> 8) & 0xff) * 0x101; + int blue = (rgb & 0xff) * 0x101; PUT_PIXEL (ximg, x, y, lookup_rgb_color (f, red, green, blue)); } data += stride; -- 2.20.1