diff --git a/src/cairo-xlib-surface-shm.c b/src/cairo-xlib-surface-shm.c index fb40699dc..9b4dea5e5 100644 --- a/src/cairo-xlib-surface-shm.c +++ b/src/cairo-xlib-surface-shm.c @@ -670,6 +670,7 @@ _cairo_xlib_shm_surface_flush (void *abstract_surface, unsigned flags) cairo_xlib_shm_surface_t *shm = abstract_surface; cairo_xlib_display_t *display; Display *dpy; + _XQEvent *qev; cairo_status_t status; if (shm->active == 0) @@ -694,6 +695,10 @@ _cairo_xlib_shm_surface_flush (void *abstract_surface, unsigned flags) while (! seqno_passed (shm->active, LastKnownRequestProcessed (dpy))) { LockDisplay(dpy); _XReadEvents(dpy); + while (dpy->head) { + qev = dpy->head; + _XDeq (dpy, NULL, qev); + } UnlockDisplay(dpy); }