summaryrefslogtreecommitdiff
path: root/hw/kdrive
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2015-10-28 19:12:47 +0000
committerJon Turney <jon.turney@dronecode.org.uk>2015-10-28 19:12:47 +0000
commita30f0cf0b8ea474000ba7aac685581f69c917223 (patch)
treef575ca1f3a68515bbca9d19161aba57118055258 /hw/kdrive
parentfb4e99d8ae5a25c8775a56b3c8a78fd37a8dd7bd (diff)
parent780022a8a5d6f8abd02f8b568f522ce5aed99839 (diff)
Merge tag 'xorg-server-1.17.3' into cygwin-release-1.17
xorg-server-1.17.3
Diffstat (limited to 'hw/kdrive')
-rw-r--r--hw/kdrive/ephyr/hostx.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index 71c1691c4..e19f57b2c 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -1039,11 +1039,13 @@ hostx_paint_rect(KdScreenInfo *screen,
sx, sy, dx, dy, width, height, FALSE);
}
else {
- /* This is slow and could be done better */
- xcb_image_t *img = xcb_image_native (HostX.conn, scrpriv->ximg, 1);
- xcb_image_put(HostX.conn, scrpriv->win, HostX.gc, img, 0, 0, 0);
- if (scrpriv->ximg != img)
+ xcb_image_t *subimg = xcb_image_subimage(scrpriv->ximg, sx, sy,
+ width, height, 0, 0, 0);
+ xcb_image_t *img = xcb_image_native(HostX.conn, subimg, 1);
+ xcb_image_put(HostX.conn, scrpriv->win, HostX.gc, img, dx, dy, 0);
+ if (subimg != img)
xcb_image_destroy(img);
+ xcb_image_destroy(subimg);
}
xcb_aux_sync(HostX.conn);