summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hw/kdrive/ephyr/ephyr.c8
-rw-r--r--hw/kdrive/ephyr/hostx.c6
-rw-r--r--hw/kdrive/ephyr/hostx.h3
3 files changed, 11 insertions, 6 deletions
diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c
index 9236252b2..8b90584be 100644
--- a/hw/kdrive/ephyr/ephyr.c
+++ b/hw/kdrive/ephyr/ephyr.c
@@ -298,7 +298,7 @@ ephyrShadowUpdate(ScreenPtr pScreen, shadowBufPtr pBuf)
* pBuf->pDamage regions
*/
shadowUpdateRotatePacked(pScreen, pBuf);
- hostx_paint_rect(screen, 0, 0, 0, 0, screen->width, screen->height);
+ hostx_paint_rect(screen, 0, 0, 0, 0, screen->width, screen->height, TRUE);
}
static void
@@ -328,7 +328,8 @@ ephyrInternalDamageRedisplay(ScreenPtr pScreen)
hostx_paint_rect(screen,
pbox->x1, pbox->y1,
pbox->x1, pbox->y1,
- pbox->x2 - pbox->x1, pbox->y2 - pbox->y1);
+ pbox->x2 - pbox->x1, pbox->y2 - pbox->y1,
+ nbox == 0);
pbox++;
}
}
@@ -889,7 +890,8 @@ ephyrProcessExpose(xcb_generic_event_t *xev)
if (scrpriv) {
hostx_paint_rect(scrpriv->screen, 0, 0, 0, 0,
scrpriv->win_width,
- scrpriv->win_height);
+ scrpriv->win_height,
+ TRUE);
} else {
EPHYR_LOG_ERROR("failed to get host screen\n");
}
diff --git a/hw/kdrive/ephyr/hostx.c b/hw/kdrive/ephyr/hostx.c
index d8ed68bfd..1dc14be38 100644
--- a/hw/kdrive/ephyr/hostx.c
+++ b/hw/kdrive/ephyr/hostx.c
@@ -1011,7 +1011,8 @@ static void hostx_paint_debug_rect(KdScreenInfo *screen,
void
hostx_paint_rect(KdScreenInfo *screen,
- int sx, int sy, int dx, int dy, int width, int height)
+ int sx, int sy, int dx, int dy, int width, int height,
+ Bool sync)
{
EphyrScrPriv *scrpriv = screen->driver;
@@ -1100,7 +1101,8 @@ hostx_paint_rect(KdScreenInfo *screen,
HostX.gc, scrpriv->ximg,
scrpriv->shminfo,
sx, sy, dx, dy, width, height, FALSE);
- xcb_aux_sync(HostX.conn);
+ if (sync)
+ xcb_aux_sync(HostX.conn);
}
else {
xcb_image_t *subimg = xcb_image_subimage(scrpriv->ximg, sx, sy,
diff --git a/hw/kdrive/ephyr/hostx.h b/hw/kdrive/ephyr/hostx.h
index 4b2678e58..8b3caf245 100644
--- a/hw/kdrive/ephyr/hostx.h
+++ b/hw/kdrive/ephyr/hostx.h
@@ -146,7 +146,8 @@ void *hostx_screen_init(KdScreenInfo *screen,
void
hostx_paint_rect(KdScreenInfo *screen,
- int sx, int sy, int dx, int dy, int width, int height);
+ int sx, int sy, int dx, int dy, int width, int height,
+ Bool sync);
Bool
hostx_load_keymap(KeySymsPtr keySyms, CARD8 *modmap, XkbControlsPtr controls);