aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/kdrive
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2013-11-07 08:23:50 +0100
committermarha <marha@users.sourceforge.net>2013-11-07 08:23:50 +0100
commit51c3a4e7b08aa904ff2af52a9f6f7adc748b361f (patch)
tree38fa447dc8970b83becb4d35487d2bb2e565301b /xorg-server/hw/kdrive
parentd79b6645eb21ca82d506ef038b8ea71a1e431f3f (diff)
parent31fd4c5654595a4763e492e4ec26f66ca3a8a405 (diff)
downloadvcxsrv-51c3a4e7b08aa904ff2af52a9f6f7adc748b361f.tar.gz
vcxsrv-51c3a4e7b08aa904ff2af52a9f6f7adc748b361f.tar.bz2
vcxsrv-51c3a4e7b08aa904ff2af52a9f6f7adc748b361f.zip
Merge remote-tracking branch 'origin/released'
* origin/released: libxtrans fontconfig mesa xserver pixman xkbcomp git update 4 nov 2013 Conflicts: xorg-server/Xext/shm.c xorg-server/os/xstrans.c
Diffstat (limited to 'xorg-server/hw/kdrive')
-rwxr-xr-xxorg-server/hw/kdrive/ephyr/hostx.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/xorg-server/hw/kdrive/ephyr/hostx.c b/xorg-server/hw/kdrive/ephyr/hostx.c
index 97c7168a0..510dd2456 100755
--- a/xorg-server/hw/kdrive/ephyr/hostx.c
+++ b/xorg-server/hw/kdrive/ephyr/hostx.c
@@ -713,9 +713,6 @@ __asm int 3;
malloc(scrpriv->ximg->stride * buffer_height);
}
- *bytes_per_line = scrpriv->ximg->stride;
- *bits_per_pixel = scrpriv->ximg->bpp;
-
if (scrpriv->win_pre_existing == None && !EphyrWantResize) {
/* Ask the WM to keep our size static */
xcb_size_hints_t size_hints = {0};
@@ -735,13 +732,21 @@ __asm int 3;
scrpriv->win_height = height;
if (host_depth_matches_server(scrpriv)) {
+ *bytes_per_line = scrpriv->ximg->stride;
+ *bits_per_pixel = scrpriv->ximg->bpp;
+
EPHYR_DBG("Host matches server");
return scrpriv->ximg->data;
}
else {
- EPHYR_DBG("server bpp %i", scrpriv->server_depth >> 3);
- scrpriv->fb_data =
- malloc(width * buffer_height * (scrpriv->server_depth >> 3));
+ int bytes_per_pixel = scrpriv->server_depth >> 3;
+ int stride = (width * bytes_per_pixel + 0x3) & ~0x3;
+
+ *bytes_per_line = stride;
+ *bits_per_pixel = scrpriv->server_depth;
+
+ EPHYR_DBG("server bpp %i", bytes_per_pixel);
+ scrpriv->fb_data = malloc (stride * buffer_height);
return scrpriv->fb_data;
}
}
@@ -780,15 +785,14 @@ hostx_paint_rect(KdScreenInfo *screen,
if (!host_depth_matches_server(scrpriv)) {
int x, y, idx, bytes_per_pixel = (scrpriv->server_depth >> 3);
+ int stride = (scrpriv->win_width * bytes_per_pixel + 0x3) & ~0x3;
unsigned char r, g, b;
unsigned long host_pixel;
EPHYR_DBG("Unmatched host depth scrpriv=%p\n", scrpriv);
for (y = sy; y < sy + height; y++)
for (x = sx; x < sx + width; x++) {
- idx =
- (scrpriv->win_width * y * bytes_per_pixel) +
- (x * bytes_per_pixel);
+ idx = y * stride + x * bytes_per_pixel;
switch (scrpriv->server_depth) {
case 16: