File N_p_xnest-ignore-getimage-errors.diff of Package xorg-x11-server

Index: xorg-server-1.12.1/hw/xnest/GCOps.c
===================================================================
--- xorg-server-1.12.1.orig/hw/xnest/GCOps.c
+++ xorg-server-1.12.1/hw/xnest/GCOps.c
@@ -94,15 +94,26 @@ xnestPutImage(DrawablePtr pDrawable, GCP
     }
 }
 
+static int
+xnestIgnoreErrorHandler (Display     *display,
+		      XErrorEvent *event)
+{
+  return False; /* return value is ignored */
+}
+
 void
 xnestGetImage(DrawablePtr pDrawable, int x, int y, int w, int h,
               unsigned int format, unsigned long planeMask, char *pImage)
 {
     XImage *ximage;
     int length;
+    int (*old_handler)(Display*, XErrorEvent*);
 
+    /* we may get BadMatch error when xnest window is minimized */
+    old_handler = XSetErrorHandler (xnestIgnoreErrorHandler);
     ximage = XGetImage(xnestDisplay, xnestDrawable(pDrawable),
                        x, y, w, h, planeMask, format);
+    XSetErrorHandler (old_handler);
 
     if (ximage) {
         length = ximage->bytes_per_line * ximage->height;
openSUSE Build Service is sponsored by