--- src/modules/X11/devX11.c (révision 61681) +++ src/modules/X11/devX11.c (révision 61682) @@ -244,6 +244,7 @@ { if(inclose || !xd || !xd->buffered || xd->holdlevel > 0) return; cairo_paint(xd->xcc); + cairo_surface_flush(xd->xcs); if (xd->type == WINDOW) XDefineCursor(display, xd->window, arrow_cursor); XSync(display, 0); xd->last = currentTime(); @@ -753,8 +754,10 @@ #ifdef HAVE_WORKING_CAIRO pX11Desc xd = (pX11Desc) dd->deviceSpecific; /* We can use the buffered copy where we have it */ - if(xd->buffered == 1) cairo_paint(xd->xcc); - else if (xd->buffered > 1) + if(xd->buffered == 1) { + cairo_paint(xd->xcc); + cairo_surface_flush(xd->xcs); + } else if (xd->buffered > 1) /* rely on timer to repaint eventually */ xd->last_activity = currentTime(); else @@ -2691,7 +2694,11 @@ Cairo_update(xd); return; } - if(xd->buffered) cairo_paint(xd->xcc); + if(xd->buffered) { + cairo_paint(xd->xcc); + cairo_surface_flush(xd->xcs); + } + #endif if(xd->type==WINDOW) XDefineCursor(display, xd->window, arrow_cursor); XSync(display, 0);