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

Index: programs/Xserver/hw/xnest/GCOps.c
===================================================================
RCS file: /cvs/xorg/xc/programs/Xserver/hw/xnest/GCOps.c,v
retrieving revision 1.6
diff -u -p -r1.6 GCOps.c
--- programs/Xserver/hw/xnest/GCOps.c	14 Jul 2005 03:36:43 -0000	1.6
+++ programs/Xserver/hw/xnest/GCOps.c	7 Jun 2006 13:40:01 -0000
@@ -96,6 +96,13 @@ 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,
@@ -103,9 +110,13 @@ xnestGetImage(DrawablePtr pDrawable, int
 {
   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