From: Richard Sandiford Date: Mon, 17 Jun 2013 16:13:25 +0000 (-0400) Subject: st/xlib: Fix XImage stride calculation X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c132c2978b02da7140462a633605a0127dfcceb4;p=mesa.git st/xlib: Fix XImage stride calculation Fixes window skew seen while running gnome on a 16-bit screen over vnc. NOTE: This is a candidate for stable release branches. Reviewed-by: Brian Paul Signed-off-by: Richard Sandiford --- diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c index 7ed401c514b..daf5ad43d74 100644 --- a/src/gallium/state_trackers/glx/xlib/xm_api.c +++ b/src/gallium/state_trackers/glx/xlib/xm_api.c @@ -1381,7 +1381,7 @@ XMesaBindTexImage(Display *dpy, XMesaBuffer drawable, int buffer, enum pipe_format internal_format = res->format; struct pipe_transfer *tex_xfer; char *map; - int line, ximage_stride; + int line, byte_width; XImage *img; internal_format = choose_pixel_format(drawable->xm_visual); @@ -1408,12 +1408,12 @@ XMesaBindTexImage(Display *dpy, XMesaBuffer drawable, int buffer, } /* The pipe transfer has a pitch rounded up to the nearest 64 pixels. */ - ximage_stride = w * ((img->bits_per_pixel + 7) / 8); + byte_width = w * ((img->bits_per_pixel + 7) / 8); for (line = 0; line < h; line++) memcpy(&map[line * tex_xfer->stride], - &img->data[line * ximage_stride], - ximage_stride); + &img->data[line * img->bytes_per_line], + byte_width); pipe_transfer_unmap(pipe, tex_xfer);