From 25a55822b4e22728834c96c8e73176d42bb406e3 Mon Sep 17 00:00:00 2001 From: Uli Schlachter Date: Wed, 14 Oct 2015 14:24:16 +0200 Subject: [PATCH] xcb: Fix _put_image_boxes() if no SHM is available This function tries to use _cairo_xcb_connection_put_image() to do the actual work. However, that function can only be used for images with "native" stride. If we only want to upload a rectangle from within an image, the function _cairo_xcb_connection_put_subimage() has to be used. This function makes sure that the correct information is sent to the X11 server. No unit test for this, because we currently do not test the !SHM case automatically. Perhaps we should? Signed-off-by: Uli Schlachter --- src/cairo-xcb-surface.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/cairo-xcb-surface.c b/src/cairo-xcb-surface.c index 2403a0d80..d4d60ad72 100644 --- a/src/cairo-xcb-surface.c +++ b/src/cairo-xcb-surface.c @@ -691,15 +691,15 @@ _put_image_boxes (cairo_xcb_surface_t *surface, int y = _cairo_fixed_integer_part (b->p1.y); int width = _cairo_fixed_integer_part (b->p2.x - b->p1.x); int height = _cairo_fixed_integer_part (b->p2.y - b->p1.y); - _cairo_xcb_connection_put_image (surface->connection, - surface->drawable, gc, - width, height, - x, y, - image->depth, - image->stride, - image->data + - x * PIXMAN_FORMAT_BPP (image->pixman_format) / 8 + - y * image->stride); + _cairo_xcb_connection_put_subimage (surface->connection, + surface->drawable, gc, + x, y, + width, height, + PIXMAN_FORMAT_BPP (image->pixman_format) / 8, + image->stride, + x, y, + image->depth, + image->data); } }