From e7fc8f405beeeb1048f69fe22923170a137b805e Mon Sep 17 00:00:00 2001 From: "Henry (Yu) Song" Date: Thu, 5 Mar 2015 00:20:42 +0000 Subject: [PATCH] xlib: Remove queued event from _XReadEvents Following patch fixes a memory leak in xlib surface. Reviewed-by: Bryce Harrington --- src/cairo-xlib-surface-shm.c | 5 +++++ 1 file changed, 5 insertions(+) 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); }