From 2f830badefa8287e85b5ed8a670a827e133241f5 Mon Sep 17 00:00:00 2001 From: Uli Schlachter Date: Tue, 7 Mar 2017 10:05:43 +0100 Subject: [PATCH] xlib: Call XSync() before ignoring errors The code here wants to ignore errors for a specific request. To do so, it sets a no-op error handler. However, it could happen that some previous request caused an error and this error will also be ignored by the no-op error handler. To avoid this, call XSync() before setting the error handler. This makes sure that all pending errors are handled. Signed-off-by: Uli Schlachter Reviewed-by: Chris Wilson --- src/cairo-xlib-surface.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/cairo-xlib-surface.c b/src/cairo-xlib-surface.c index ffea476f6..ee14af278 100644 --- a/src/cairo-xlib-surface.c +++ b/src/cairo-xlib-surface.c @@ -793,6 +793,7 @@ _get_image_surface (cairo_xlib_surface_t *surface, _cairo_xlib_shm_surface_get_ximage (&image->base, &shm_image); + XSync (display->display, False); old_handler = XSetErrorHandler (_noop_error_handler); success = XShmGetImage (display->display, surface->drawable, @@ -814,6 +815,7 @@ _get_image_surface (cairo_xlib_surface_t *surface, if (surface->use_pixmap == 0) { cairo_xlib_error_func_t old_handler; + XSync (display->display, False); old_handler = XSetErrorHandler (_noop_error_handler); ximage = XGetImage (display->display,