diff --git a/hw/kdrive/ephyr/ephyr.c b/hw/kdrive/ephyr/ephyr.c index 9236252b24cee47d011dfae2a90876b925bdb096..8b90584be9fbc2a9c09bc554b9e20f02b9b0d419 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 d8ed68bfd7cb9d3fa425798de1f2324b25478f42..1dc14be3881d2cc91bff5f01da648a68b6747b4e 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 4b2678e58aab355fc8a7b52c25e8e018c716ffd9..8b3caf245e338f1f6db41765ad16a99354e0542c 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);