diff options
author | marha <marha@users.sourceforge.net> | 2013-11-04 12:08:23 +0100 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2013-11-04 12:08:23 +0100 |
commit | 31fd4c5654595a4763e492e4ec26f66ca3a8a405 (patch) | |
tree | 8d6b249c93725e838676e26af171a167f6f20903 /xorg-server/hw/kdrive/ephyr/hostx.c | |
parent | e4ef724e06621be9325fc41ed886fd404467fdc0 (diff) | |
download | vcxsrv-31fd4c5654595a4763e492e4ec26f66ca3a8a405.tar.gz vcxsrv-31fd4c5654595a4763e492e4ec26f66ca3a8a405.tar.bz2 vcxsrv-31fd4c5654595a4763e492e4ec26f66ca3a8a405.zip |
libxtrans fontconfig mesa xserver pixman xkbcomp git update 4 nov 2013
xserver commit 33c85beed521c9db140cadd8c5aa9992398ee1fe
xkbcomp commit e3e6e938535532bfad175c1635256ab7fb3ac943
pixman commit 8cbc7da4e525c96a8e089e4c1baee75dc8315218
libxtrans commit 1fb0fd555a16dd8fce4abc6d3fd22b315f46762a
fontconfig commit 767108aa1327cf0156dfc6f024dbc8fb783ae067
mesa commit 2f896627175384fd5943f21804700a155ba4e8a0
Diffstat (limited to 'xorg-server/hw/kdrive/ephyr/hostx.c')
-rw-r--r-- | xorg-server/hw/kdrive/ephyr/hostx.c | 22 |
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 5fa33b9db..ee9ae455c 100644 --- a/xorg-server/hw/kdrive/ephyr/hostx.c +++ b/xorg-server/hw/kdrive/ephyr/hostx.c @@ -695,9 +695,6 @@ hostx_screen_init(KdScreenInfo *screen, 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}; @@ -717,13 +714,21 @@ hostx_screen_init(KdScreenInfo *screen, 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; } } @@ -762,15 +767,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: |