changeset 2238:274608924880

Drop patch for 6678385; applied upstream. 2010-08-12 Andrew John Hughes <ahughes@redhat.com> * patches/openjdk/6678385-window_movement_crasher.patch: Dropped, applied upstream. * Makefile.am: Remove above patch.
author Andrew John Hughes <ahughes@redhat.com>
date Thu, 12 Aug 2010 19:04:54 +0100
parents 999fec26cf9f
children cbec424f470f
files ChangeLog Makefile.am patches/openjdk/6678385-window_movement_crasher.patch
diffstat 3 files changed, 7 insertions(+), 1242 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Jul 28 13:08:03 2010 +0100
+++ b/ChangeLog	Thu Aug 12 19:04:54 2010 +0100
@@ -1,3 +1,10 @@
+2010-08-12  Andrew John Hughes  <ahughes@redhat.com>
+
+	* patches/openjdk/6678385-window_movement_crasher.patch:
+	Dropped, applied upstream.
+	* Makefile.am:
+	Remove above patch.
+
 2010-07-26  Andrew John Hughes  <ahughes@redhat.com>
 
 	* patches/icedtea-jtreg-jrunscript.patch:
--- a/Makefile.am	Wed Jul 28 13:08:03 2010 +0100
+++ b/Makefile.am	Thu Aug 12 19:04:54 2010 +0100
@@ -278,7 +278,6 @@
 	patches/icedtea-jtreg-httpTest.patch \
 	patches/arm.patch \
 	patches/shark-debug-option.patch \
-	patches/openjdk/6678385-window_movement_crasher.patch \
 	patches/debug-dir.patch \
 	patches/no-sync.patch \
 	patches/icedtea-override-redirect-metacity.patch \
--- a/patches/openjdk/6678385-window_movement_crasher.patch	Wed Jul 28 13:08:03 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1241 +0,0 @@
-# HG changeset patch
-# User art
-# Date 1242387635 -14400
-# Node ID f62f7fcc9965cd0b110f07b4cd42c419f77717c1
-# Parent  b28b073e72b625a4d8b6e71010a2968b5fc85124
-6678385: Random java.lang.StackOverflowError from various JDKs
-Reviewed-by: stayer
-
-IcedTea6 note: This patch (upstream bz#6678385) fixes rhbz# 551835.
-
-diff -uNr openjdk.orig/jdk/make/sun/xawt/mapfile-vers openjdk/jdk/make/sun/xawt/mapfile-vers
---- openjdk.orig/jdk/make/sun/xawt/mapfile-vers	2010-07-15 10:28:21.755105655 -0400
-+++ openjdk/jdk/make/sun/xawt/mapfile-vers	2010-07-15 10:28:42.630981569 -0400
-@@ -125,6 +125,7 @@
-         Java_sun_awt_X11_XlibWrapper_SetToolkitErrorHandler;
-         Java_sun_awt_X11_XlibWrapper_XSetErrorHandler;
-         Java_sun_awt_X11_XlibWrapper_CallErrorHandler;
-+        Java_sun_awt_X11_XlibWrapper_PrintXErrorEvent;
-         Java_sun_awt_X11_XlibWrapper_XInternAtoms;
-         Java_sun_awt_X11_XlibWrapper_XChangeWindowAttributes;
-         Java_sun_awt_X11_XlibWrapper_XDeleteProperty;
-@@ -269,7 +270,6 @@
-         Java_sun_awt_X11_XToolkit_getDefaultXColormap;
-         Java_sun_awt_X11_XToolkit_getDefaultScreenData;
-         Java_sun_awt_X11_XToolkit_getEnv;
--        Java_sun_awt_X11_XToolkit_setNoisyXErrorHandler;
-         Java_sun_awt_X11_XlibWrapper_XCreateBitmapFromData;
-         Java_sun_awt_X11_XlibWrapper_XFreePixmap;
-         Java_sun_awt_X11_XlibWrapper_XAllocColor;
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/MotifDnDConstants.java openjdk/jdk/src/solaris/classes/sun/awt/X11/MotifDnDConstants.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/MotifDnDConstants.java	2010-07-15 10:28:21.905105617 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/MotifDnDConstants.java	2010-07-15 10:28:42.631981678 -0400
-@@ -119,7 +119,7 @@
-                                                             false,
-                                                             XlibWrapper.AnyPropertyType);
-         try {
--            int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-+            int status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-             if (status == XlibWrapper.Success &&
-                 wpg.getData() != 0 &&
-@@ -189,7 +189,7 @@
-                 try {
-                     Native.putLong(data, motifWindow);
- 
--                    XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+                    XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-                     XlibWrapper.XChangeProperty(XToolkit.getDisplay(),
-                                                 defaultRootWindow,
-                                                 XA_MOTIF_DRAG_WINDOW.getAtom(),
-@@ -276,7 +276,7 @@
-                                                             false,
-                                                             XA_MOTIF_DRAG_TARGETS.getAtom());
-         try {
--            int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-+            int status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-             if (status != XlibWrapper.Success
-                 || wpg.getActualType() != XA_MOTIF_DRAG_TARGETS.getAtom()
-@@ -390,7 +390,7 @@
-                 }
-             }
- 
--            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-             XlibWrapper.XChangeProperty(XToolkit.getDisplay(),
-                                         motifWindow,
-                                         XA_MOTIF_DRAG_TARGETS.getAtom(),
-@@ -406,7 +406,7 @@
-                 // Create a new motif window and retry.
-                 motifWindow = createMotifWindow();
- 
--                XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-                 XlibWrapper.XChangeProperty(XToolkit.getDisplay(),
-                                             motifWindow,
-                                             XA_MOTIF_DRAG_TARGETS.getAtom(),
-@@ -530,7 +530,7 @@
-             // CARD32 icc_handle
-             unsafe.putInt(structData + 4, (int)XA_MOTIF_ATOM_0.getAtom());
- 
--            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-             XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window,
-                                         XA_MOTIF_ATOM_0.getAtom(),
-                                         XA_MOTIF_DRAG_INITIATOR_INFO.getAtom(),
-@@ -563,7 +563,7 @@
-             unsafe.putShort(data + 10, (short)0); /* pad */
-             unsafe.putInt(data + 12, dataSize);
- 
--            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-             XlibWrapper.XChangeProperty(XToolkit.getDisplay(), window,
-                                         XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-                                         XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java openjdk/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java	2010-07-15 10:28:21.905105617 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDragSourceProtocol.java	2010-07-15 10:28:42.633981353 -0400
-@@ -184,7 +184,7 @@
-                                      XlibWrapper.AnyPropertyType);
- 
-         try {
--            int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-+            int status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-             /*
-              * DragICCI.h:
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java openjdk/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java	2010-07-15 10:28:21.904105558 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/MotifDnDDropTargetProtocol.java	2010-07-15 10:28:42.636014780 -0400
-@@ -102,7 +102,7 @@
-                                      XlibWrapper.AnyPropertyType);
- 
-         try {
--            status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-+            status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-             /*
-              * DragICCI.h:
-@@ -162,7 +162,7 @@
-                 unsafe.putInt(data + 12, dataSize);
-             }
- 
--            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-             XlibWrapper.XChangeProperty(XToolkit.getDisplay(), embedder,
-                                         MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-                                         MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-@@ -204,7 +204,7 @@
-                                          XlibWrapper.AnyPropertyType);
- 
-             try {
--                status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-+                status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                 /*
-                  * DragICCI.h:
-@@ -236,7 +236,7 @@
- 
-                     unsafe.putInt(data + 4, tproxy);
- 
--                    XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+                    XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-                     XlibWrapper.XChangeProperty(XToolkit.getDisplay(), embedder,
-                                                 MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-                                                 MotifDnDConstants.XA_MOTIF_DRAG_RECEIVER_INFO.getAtom(),
-@@ -276,7 +276,7 @@
-                                      XlibWrapper.AnyPropertyType);
- 
-         try {
--            status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-+            status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-             /*
-              * DragICCI.h:
-@@ -325,7 +325,7 @@
-                                      XlibWrapper.AnyPropertyType);
- 
-         try {
--            int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-+            int status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-             if (status == (int)XlibWrapper.Success && wpg.getData() != 0 &&
-                 wpg.getActualType() != 0 && wpg.getActualFormat() == 8 &&
-@@ -375,7 +375,7 @@
-                                          MotifDnDConstants.XA_MOTIF_DRAG_INITIATOR_INFO.getAtom());
- 
-             try {
--                int status = wpg.execute(XToolkit.IgnoreBadWindowHandler);
-+                int status = wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                 if (status == XlibWrapper.Success && wpg.getData() != 0 &&
-                     wpg.getActualType() ==
-@@ -412,7 +412,7 @@
-          */
-         XWindowAttributes wattr = new XWindowAttributes();
-         try {
--            XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-             int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
-                                                           source_win, wattr.pData);
- 
-@@ -429,7 +429,7 @@
-             wattr.dispose();
-         }
- 
--        XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+        XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-         XlibWrapper.XSelectInput(XToolkit.getDisplay(), source_win,
-                                  source_win_mask |
-                                  XlibWrapper.StructureNotifyMask);
-@@ -1020,7 +1020,7 @@
-         if (sourceWindow != 0) {
-             XToolkit.awtLock();
-             try {
--                XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-                 XlibWrapper.XSelectInput(XToolkit.getDisplay(), sourceWindow,
-                                          sourceWindowMask);
-                 XToolkit.RESTORE_XERROR_HANDLER();
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/WindowPropertyGetter.java openjdk/jdk/src/solaris/classes/sun/awt/X11/WindowPropertyGetter.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/WindowPropertyGetter.java	2010-07-15 10:28:21.900105578 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/WindowPropertyGetter.java	2010-07-15 10:28:42.637046074 -0400
-@@ -75,7 +75,7 @@
-     public int execute() {
-         return execute(null);
-     }
--    public int execute(XToolkit.XErrorHandler errorHandler) {
-+    public int execute(XErrorHandler errorHandler) {
- 
-         XToolkit.awtLock();
-         try {
-@@ -94,7 +94,7 @@
- 
-             // Fix for performance problem - IgnodeBadWindowHandler is
-             // used too much without reason, just ignore it
--            if (errorHandler == XToolkit.IgnoreBadWindowHandler) {
-+            if (errorHandler instanceof XErrorHandler.IgnoreBadWindowHandler) {
-                 errorHandler = null;
-             }
- 
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XAWTXSettings.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XAWTXSettings.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XAWTXSettings.java	2010-07-15 10:28:21.896105637 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XAWTXSettings.java	2010-07-15 10:28:42.637981716 -0400
-@@ -122,7 +122,7 @@
-                 new WindowPropertyGetter(owner, xSettingsPropertyAtom, 0, MAX_LENGTH,
-                         false, xSettingsPropertyAtom.getAtom() );
-             try {
--                int status = getter.execute(XToolkit.IgnoreBadWindowHandler);
-+                int status = getter.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                 if (status != XlibWrapper.Success || getter.getData() == 0) {
-                     if (log.isLoggable(Level.FINE)) log.fine("OH OH : getter failed  status = " + status );
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java	2010-07-15 10:28:21.895105718 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XDecoratedPeer.java	2010-07-15 10:28:42.640232090 -0400
-@@ -1155,7 +1155,8 @@
-     }
- 
-     boolean isOverrideRedirect() {
--        return false;
-+//        return false;
-+        return ((XToolkit)Toolkit.getDefaultToolkit()).isOverrideRedirect((Window)target);
-     }
- 
-     public boolean requestWindowFocus(long time, boolean timeProvided) {
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java	2010-07-15 10:28:21.906105640 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XDnDDragSourceProtocol.java	2010-07-15 10:28:42.642232277 -0400
-@@ -96,7 +96,7 @@
-                 action_count++;
-             }
- 
--            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-             XDnDConstants.XA_XdndActionList.setAtomData(window,
-                                                         XAtom.XA_ATOM,
-                                                         data, action_count);
-@@ -117,7 +117,7 @@
-         try {
-             Native.put(data, formats);
- 
--            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-             XDnDConstants.XA_XdndTypeList.setAtomData(window,
-                                                       XAtom.XA_ATOM,
-                                                       data, formats.length);
-@@ -195,7 +195,7 @@
-             new WindowPropertyGetter(window, XDnDConstants.XA_XdndAware, 0, 1,
-                                      false, XlibWrapper.AnyPropertyType);
- 
--        int status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
-+        int status = wpg1.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-         if (status == XlibWrapper.Success &&
-             wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
-@@ -215,7 +215,7 @@
-                                              0, 1, false, XAtom.XA_WINDOW);
- 
-                 try {
--                    status = wpg2.execute(XToolkit.IgnoreBadWindowHandler);
-+                    status = wpg2.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                     if (status == XlibWrapper.Success &&
-                         wpg2.getData() != 0 &&
-@@ -233,7 +233,7 @@
-                                                  0, 1, false, XAtom.XA_WINDOW);
- 
-                     try {
--                        status = wpg3.execute(XToolkit.IgnoreBadWindowHandler);
-+                        status = wpg3.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                         if (status != XlibWrapper.Success ||
-                             wpg3.getData() == 0 ||
-@@ -249,7 +249,7 @@
-                                                          XlibWrapper.AnyPropertyType);
- 
-                             try {
--                                status = wpg4.execute(XToolkit.IgnoreBadWindowHandler);
-+                                status = wpg4.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                                 if (status != XlibWrapper.Success ||
-                                     wpg4.getData() == 0 ||
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java	2010-07-15 10:28:21.903105589 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XDnDDropTargetProtocol.java	2010-07-15 10:28:42.645236553 -0400
-@@ -88,7 +88,7 @@
-         try {
-             Native.putLong(data, 0, XDnDConstants.XDND_PROTOCOL_VERSION);
- 
--            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-             XDnDConstants.XA_XdndAware.setAtomData(window, XAtom.XA_ATOM, data, 1);
-             XToolkit.RESTORE_XERROR_HANDLER();
- 
-@@ -122,7 +122,7 @@
-                                      false, XlibWrapper.AnyPropertyType);
- 
-         try {
--            status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
-+            status = wpg1.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-             if (status == XlibWrapper.Success &&
-                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
-@@ -141,7 +141,7 @@
-                                          0, 1, false, XAtom.XA_WINDOW);
- 
-             try {
--                status = wpg2.execute(XToolkit.IgnoreBadWindowHandler);
-+                status = wpg2.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                 if (status == XlibWrapper.Success &&
-                     wpg2.getData() != 0 &&
-@@ -159,7 +159,7 @@
-                                              0, 1, false, XAtom.XA_WINDOW);
- 
-                 try {
--                    status = wpg3.execute(XToolkit.IgnoreBadWindowHandler);
-+                    status = wpg3.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                     if (status != XlibWrapper.Success ||
-                         wpg3.getData() == 0 ||
-@@ -175,7 +175,7 @@
-                                                      XlibWrapper.AnyPropertyType);
- 
-                         try {
--                            status = wpg4.execute(XToolkit.IgnoreBadWindowHandler);
-+                            status = wpg4.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                             if (status != XlibWrapper.Success ||
-                                 wpg4.getData() == 0 ||
-@@ -205,7 +205,7 @@
- 
-             /* The proxy window must have the XdndAware set, as XDnD protocol
-                prescribes to check the proxy window for XdndAware. */
--            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-             XDnDConstants.XA_XdndAware.setAtomData(newProxy, XAtom.XA_ATOM,
-                                                    data, 1);
-             XToolkit.RESTORE_XERROR_HANDLER();
-@@ -219,7 +219,7 @@
-             Native.putLong(data, 0, newProxy);
- 
-             /* The proxy window must have the XdndProxy set to point to itself.*/
--            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-             XDnDConstants.XA_XdndProxy.setAtomData(newProxy, XAtom.XA_WINDOW,
-                                                    data, 1);
-             XToolkit.RESTORE_XERROR_HANDLER();
-@@ -232,7 +232,7 @@
- 
-             Native.putLong(data, 0, XDnDConstants.XDND_PROTOCOL_VERSION);
- 
--            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-             XDnDConstants.XA_XdndAware.setAtomData(embedder, XAtom.XA_ATOM,
-                                                    data, 1);
-             XToolkit.RESTORE_XERROR_HANDLER();
-@@ -245,7 +245,7 @@
- 
-             Native.putLong(data, 0, newProxy);
- 
--            XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-             XDnDConstants.XA_XdndProxy.setAtomData(embedder, XAtom.XA_WINDOW,
-                                                    data, 1);
-             XToolkit.RESTORE_XERROR_HANDLER();
-@@ -278,7 +278,7 @@
-             try {
-                 Native.putLong(data, 0, entry.getVersion());
- 
--                XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-                 XDnDConstants.XA_XdndAware.setAtomData(embedder, XAtom.XA_ATOM,
-                                                        data, 1);
-                 XToolkit.RESTORE_XERROR_HANDLER();
-@@ -291,7 +291,7 @@
- 
-                 Native.putLong(data, 0, (int)entry.getProxy());
- 
--                XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-                 XDnDConstants.XA_XdndProxy.setAtomData(embedder, XAtom.XA_WINDOW,
-                                                        data, 1);
-                 XToolkit.RESTORE_XERROR_HANDLER();
-@@ -329,7 +329,7 @@
-                                      false, XlibWrapper.AnyPropertyType);
- 
-         try {
--            status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
-+            status = wpg1.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-             if (status == XlibWrapper.Success &&
-                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
-@@ -348,7 +348,7 @@
-                                          0, 1, false, XAtom.XA_WINDOW);
- 
-             try {
--                status = wpg2.execute(XToolkit.IgnoreBadWindowHandler);
-+                status = wpg2.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                 if (status == XlibWrapper.Success &&
-                     wpg2.getData() != 0 &&
-@@ -366,7 +366,7 @@
-                                              0, 1, false, XAtom.XA_WINDOW);
- 
-                 try {
--                    status = wpg3.execute(XToolkit.IgnoreBadWindowHandler);
-+                    status = wpg3.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                     if (status != XlibWrapper.Success ||
-                         wpg3.getData() == 0 ||
-@@ -382,7 +382,7 @@
-                                                      XlibWrapper.AnyPropertyType);
- 
-                         try {
--                            status = wpg4.execute(XToolkit.IgnoreBadWindowHandler);
-+                            status = wpg4.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                             if (status != XlibWrapper.Success ||
-                                 wpg4.getData() == 0 ||
-@@ -411,7 +411,7 @@
-                                      false, XlibWrapper.AnyPropertyType);
- 
-         try {
--            int status = wpg1.execute(XToolkit.IgnoreBadWindowHandler);
-+            int status = wpg1.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-             if (status == XlibWrapper.Success &&
-                 wpg1.getData() != 0 && wpg1.getActualType() == XAtom.XA_ATOM) {
-@@ -473,7 +473,7 @@
-                                          0, 0xFFFF, false,
-                                          XAtom.XA_ATOM);
-             try {
--                wpg.execute(XToolkit.IgnoreBadWindowHandler);
-+                wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                 if (wpg.getActualType() == XAtom.XA_ATOM &&
-                     wpg.getActualFormat() == 32) {
-@@ -505,7 +505,7 @@
-                                          0, 0xFFFF, false,
-                                          XAtom.XA_ATOM);
-             try {
--                wpg.execute(XToolkit.IgnoreBadWindowHandler);
-+                wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                 if (wpg.getActualType() == XAtom.XA_ATOM &&
-                     wpg.getActualFormat() == 32) {
-@@ -541,7 +541,7 @@
-          */
-         XWindowAttributes wattr = new XWindowAttributes();
-         try {
--            XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-             int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
-                                                           source_win, wattr.pData);
- 
-@@ -558,7 +558,7 @@
-             wattr.dispose();
-         }
- 
--        XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+        XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-         XlibWrapper.XSelectInput(XToolkit.getDisplay(), source_win,
-                                  source_win_mask |
-                                  XlibWrapper.StructureNotifyMask);
-@@ -963,7 +963,7 @@
-         if (sourceWindow != 0) {
-             XToolkit.awtLock();
-             try {
--                XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-                 XlibWrapper.XSelectInput(XToolkit.getDisplay(), sourceWindow,
-                                          sourceWindowMask);
-                 XToolkit.RESTORE_XERROR_HANDLER();
-@@ -1104,14 +1104,14 @@
-                                                  0, 0xFFFF, false,
-                                                  XAtom.XA_ATOM);
-                     try {
--                        wpg.execute(XToolkit.IgnoreBadWindowHandler);
-+                        wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
-                         if (wpg.getActualType() == XAtom.XA_ATOM &&
-                             wpg.getActualFormat() == 32) {
- 
-                             XToolkit.awtLock();
-                             try {
--                                XToolkit.WITH_XERROR_HANDLER(XWM.VerifyChangePropertyHandler);
-+                                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-                                 XDnDConstants.XA_XdndTypeList.setAtomData(xclient.get_window(),
-                                                                           XAtom.XA_ATOM,
-                                                                           wpg.getData(),
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDragSourceProtocol.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XDragSourceProtocol.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDragSourceProtocol.java	2010-07-15 10:28:21.896105637 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XDragSourceProtocol.java	2010-07-15 10:28:42.646232066 -0400
-@@ -181,7 +181,7 @@
-                                    long time) {
-         XWindowAttributes wattr = new XWindowAttributes();
-         try {
--            XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-             int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
-                                                           targetWindow, wattr.pData);
- 
-@@ -198,7 +198,7 @@
-             wattr.dispose();
-         }
- 
--        XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+        XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-         XlibWrapper.XSelectInput(XToolkit.getDisplay(), targetWindow,
-                                  targetWindowMask |
-                                  XlibWrapper.StructureNotifyMask);
-@@ -214,7 +214,7 @@
-     }
- 
-     protected final void finalizeDrop() {
--        XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+        XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-         XlibWrapper.XSelectInput(XToolkit.getDisplay(), targetWindow,
-                                  targetWindowMask);
-         XToolkit.RESTORE_XERROR_HANDLER();
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java	2010-07-15 10:28:21.906105640 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XDropTargetRegistry.java	2010-07-15 10:28:42.648232198 -0400
-@@ -172,7 +172,7 @@
-                 if (dest_x >= 0 && dest_y >= 0) {
-                     XWindowAttributes wattr = new XWindowAttributes();
-                     try {
--                        XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+                        XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-                         int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
-                                                                       window, wattr.pData);
-                         XToolkit.RESTORE_XERROR_HANDLER();
-@@ -226,7 +226,7 @@
-             long event_mask = 0;
-             XWindowAttributes wattr = new XWindowAttributes();
-             try {
--                XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-                 int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
-                                                               embedder, wattr.pData);
-                 XToolkit.RESTORE_XERROR_HANDLER();
-@@ -244,7 +244,7 @@
-             }
- 
-             if ((event_mask & XlibWrapper.PropertyChangeMask) == 0) {
--                XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-                 XlibWrapper.XSelectInput(XToolkit.getDisplay(), embedder,
-                                          event_mask | XlibWrapper.PropertyChangeMask);
-                 XToolkit.RESTORE_XERROR_HANDLER();
-@@ -398,7 +398,7 @@
- 
-             /* Restore the original event mask for the embedder. */
-             if ((event_mask & XlibWrapper.PropertyChangeMask) == 0) {
--                XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-                 XlibWrapper.XSelectInput(XToolkit.getDisplay(), embedder,
-                                          event_mask);
-                 XToolkit.RESTORE_XERROR_HANDLER();
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java	2010-07-15 10:28:21.897105547 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XEmbedCanvasPeer.java	2010-07-15 10:28:42.650232331 -0400
-@@ -301,7 +301,7 @@
-         try {
-             XWindowAttributes wattr = new XWindowAttributes();
-             try {
--                XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+                XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-                 int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
-                                                               xembed.handle, wattr.pData);
- 
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XErrorHandler.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XErrorHandler.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XErrorHandler.java	1969-12-31 19:00:00.000000000 -0500
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XErrorHandler.java	2010-07-15 10:28:42.651989313 -0400
-@@ -0,0 +1,79 @@
-+/*
-+ * Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved.
-+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-+ *
-+ * This code is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License version 2 only, as
-+ * published by the Free Software Foundation.  Sun designates this
-+ * particular file as subject to the "Classpath" exception as provided
-+ * by Sun in the LICENSE file that accompanied this code.
-+ *
-+ * This code is distributed in the hope that it will be useful, but WITHOUT
-+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-+ * version 2 for more details (a copy is included in the LICENSE file that
-+ * accompanied this code).
-+ *
-+ * You should have received a copy of the GNU General Public License version
-+ * 2 along with this work; if not, write to the Free Software Foundation,
-+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-+ *
-+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
-+ * CA 95054 USA or visit www.sun.com if you need additional information or
-+ * have any questions.
-+ */
-+package sun.awt.X11;
-+
-+public abstract class XErrorHandler {
-+
-+    /*
-+     * Called under AWT lock
-+     */
-+    public abstract int handleError(long display, XErrorEvent err);
-+
-+    /*
-+     * Forwards all the errors to saved error handler (which was
-+     * set before XToolkit had been initialized).
-+     */
-+    public static class XBaseErrorHandler extends XErrorHandler {
-+        @Override
-+        public int handleError(long display, XErrorEvent err) {
-+            return XToolkit.SAVED_ERROR_HANDLER(display, err);
-+        }
-+    }
-+
-+    /*
-+     * Instead of validating window id, we simply call XGetWindowProperty,
-+     * but temporary install this function as the error handler to ignore
-+     * BadWindow error.
-+     */
-+    public static class IgnoreBadWindowHandler extends XBaseErrorHandler {
-+        @Override
-+        public int handleError(long display, XErrorEvent err) {
-+            if (err.get_error_code() == XConstants.BadWindow) {
-+                return 0;
-+            }
-+            return super.handleError(display, err);
-+        }
-+        // Shared instance
-+        private static IgnoreBadWindowHandler theInstance = new IgnoreBadWindowHandler();
-+        public static IgnoreBadWindowHandler getInstance() {
-+            return theInstance;
-+        }
-+    }
-+
-+    public static class VerifyChangePropertyHandler extends XBaseErrorHandler {
-+        @Override
-+        public int handleError(long display, XErrorEvent err) {
-+            if (err.get_request_code() == XProtocolConstants.X_ChangeProperty) {
-+                return 0;
-+            }
-+            return super.handleError(display, err);
-+        }
-+        // Shared instance
-+        private static IgnoreBadWindowHandler theInstance = new IgnoreBadWindowHandler();
-+        public static IgnoreBadWindowHandler getInstance() {
-+            return theInstance;
-+        }
-+    }
-+}
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XlibUtil.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XlibUtil.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XlibUtil.java	2010-07-15 10:28:21.893105473 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XlibUtil.java	2010-07-15 10:28:42.651989313 -0400
-@@ -149,7 +149,7 @@
-                 new XTranslateCoordinates(src, dst, p.x, p.y);
-             try
-             {
--                int status = xtc.execute(XToolkit.IgnoreBadWindowHandler);
-+                int status = xtc.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-                 if ((status != 0) &&
-                     ((XToolkit.saved_error == null) ||
-                      (XToolkit.saved_error.get_error_code() == XlibWrapper.Success)))
-@@ -306,7 +306,7 @@
-                                          XWM.XA_WM_STATE);
-             try
-             {
--                wpg.execute(XToolkit.IgnoreBadWindowHandler);
-+                wpg.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-                 if (wpg.getActualType() == XWM.XA_WM_STATE.getAtom())
-                 {
-                     return true;
-@@ -345,7 +345,7 @@
-         XWindowAttributes wattr = new XWindowAttributes();
-         try
-         {
--            XToolkit.WITH_XERROR_HANDLER(XToolkit.IgnoreBadWindowHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-             int status = XlibWrapper.XGetWindowAttributes(XToolkit.getDisplay(),
-                                                           window, wattr.pData);
-             XToolkit.RESTORE_XERROR_HANDLER();
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java	2010-07-15 10:28:21.905105617 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XlibWrapper.java	2010-07-15 10:28:42.654187919 -0400
-@@ -613,4 +613,6 @@
-         String javaVersion = XToolkit.getSystemProperty("java.version");
-         return javaVersion != null && javaVersion.contains("internal");
-     }
-+
-+    static native void PrintXErrorEvent(long display, long event_ptr);
- }
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XProtocol.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XProtocol.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XProtocol.java	2010-07-15 10:28:21.893105473 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XProtocol.java	2010-07-15 10:28:42.655357930 -0400
-@@ -35,20 +35,6 @@
-     private Map<XAtom, XAtomList> atomToList = new HashMap<XAtom, XAtomList>();
-     private Map<XAtom, Long> atomToAnchor = new HashMap<XAtom, Long>();
- 
--    /*
--     * Temporary error handler that ensures that we know if
--     * XChangeProperty succeeded or not.
--     */
--    static XToolkit.XErrorHandler VerifyChangePropertyHandler = new XToolkit.XErrorHandler() {
--            public int handleError(long display, XErrorEvent err) {
--                XToolkit.XERROR_SAVE(err);
--                if (err.get_request_code() == XlibWrapper.X_ChangeProperty) {
--                    return 0;
--                } else {
--                    return XToolkit.SAVED_ERROR_HANDLER(display, err);
--                }
--            }
--        };
-     volatile boolean firstCheck = true;
-     /*
-      * Check that that the list of protocols specified by WM in property
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XQueryTree.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XQueryTree.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XQueryTree.java	2010-07-15 10:28:21.894105746 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XQueryTree.java	2010-07-15 10:28:42.662356819 -0400
-@@ -51,7 +51,7 @@
-         public int execute() {
-                 return execute(null);
-         }
--        public int execute(XToolkit.XErrorHandler errorHandler) {
-+        public int execute(XErrorHandler errorHandler) {
-                 XToolkit.awtLock();
-                 try {
-                     if (isDisposed()) {
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java	2010-07-15 10:28:21.896105637 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XToolkit.java	2010-07-15 10:30:45.039232001 -0400
-@@ -48,6 +48,7 @@
- import sun.font.FontManager;
- import sun.misc.PerformanceLogger;
- import sun.print.PrintJob2D;
-+import sun.security.action.GetBooleanAction;
- import java.lang.reflect.*;
- 
- public class XToolkit extends UNIXToolkit implements Runnable, XConstants {
-@@ -120,62 +121,78 @@
-             setBackingStoreType();
-         }
-         m_removeSourceEvents = SunToolkit.getMethod(EventQueue.class, "removeSourceEvents", new Class[] {Object.class, Boolean.TYPE}) ;
-+        noisyAwtHandler = AccessController.doPrivileged(new GetBooleanAction("sun.awt.noisyerrorhandler"));
-+
-     }
- 
--    // Error handler stuff
--    static XErrorEvent saved_error;
--    static long saved_error_handler;
--    static XErrorHandler curErrorHandler;
--    // Should be called under LOCK, before releasing LOCK RESTORE_XERROR_HANDLER should be called
--    static void WITH_XERROR_HANDLER(XErrorHandler handler) {
-+    //---- ERROR HANDLER CODE ----//
-+
-+    /*
-+     * Error handler at the moment of XToolkit initialization
-+     */
-+    private static long saved_error_handler;
-+
-+    /*
-+     * XErrorEvent being handled
-+     */
-+    static volatile XErrorEvent saved_error;
-+
-+    /*
-+     * Current error handler or null if no error handler is set
-+     */
-+    private static XErrorHandler current_error_handler;
-+
-+    /*
-+     * Value of sun.awt.noisyerrorhandler system property
-+     */
-+    private static boolean noisyAwtHandler;
-+
-+    public static void WITH_XERROR_HANDLER(XErrorHandler handler) {
-         saved_error = null;
--        curErrorHandler = handler;
--        XSync();
--        saved_error_handler = XlibWrapper.SetToolkitErrorHandler();
--    }
--    static void XERROR_SAVE(XErrorEvent event) {
--        saved_error = event;
-+        current_error_handler = handler;
-     }
--    // Should be called under LOCK
--    static void RESTORE_XERROR_HANDLER() {
--       XSync();
--        XlibWrapper.XSetErrorHandler(saved_error_handler);
--        curErrorHandler = null;
-+
-+    public static void RESTORE_XERROR_HANDLER() {
-+        current_error_handler = null;
-     }
-+
-     // Should be called under LOCK
--    static int SAVED_ERROR_HANDLER(long display, XErrorEvent error) {
--        return XlibWrapper.CallErrorHandler(saved_error_handler, display, error.pData);
--    }
--    interface XErrorHandler {
--        int handleError(long display, XErrorEvent err);
-+    public static int SAVED_ERROR_HANDLER(long display, XErrorEvent error) {
-+        if (saved_error_handler != 0) {
-+            // Default XErrorHandler may just terminate the process. Don't call it.
-+            // return XlibWrapper.CallErrorHandler(saved_error_handler, display, error.pData);
-+        }
-+        if (log.isLoggable(Level.FINE)) {
-+            log.log(Level.FINE, "Unhandled XErrorEvent: " +
-+                    "id=" + error.get_resourceid() + ", " +
-+                    "serial=" + error.get_serial() + ", " +
-+                    "ec=" + error.get_error_code() + ", " +
-+                    "rc=" + error.get_request_code() + ", " +
-+                    "mc=" + error.get_minor_code());
-+        }
-+        return 0;
-     }
--    static int GlobalErrorHandler(long display, long event_ptr) {
-+
-+    // Called from the native code when an error occurs
-+    private static int globalErrorHandler(long display, long event_ptr) {
-+        if (noisyAwtHandler) {
-+            XlibWrapper.PrintXErrorEvent(display, event_ptr);
-+        }
-         XErrorEvent event = new XErrorEvent(event_ptr);
-+        saved_error = event;
-         try {
--            if (curErrorHandler != null) {
--                return curErrorHandler.handleError(display, event);
-+            if (current_error_handler != null) {
-+                return current_error_handler.handleError(display, event);
-             } else {
-                 return SAVED_ERROR_HANDLER(display, event);
-             }
--        } finally {
-+        } catch (Throwable z) {
-+            log.log(Level.FINE, "Error in GlobalErrorHandler", z);
-         }
-+        return 0;
-     }
- 
--/*
-- * Instead of validating window id, we simply call XGetWindowProperty,
-- * but temporary install this function as the error handler to ignore
-- * BadWindow error.
-- */
--    static XErrorHandler IgnoreBadWindowHandler = new XErrorHandler() {
--            public int handleError(long display, XErrorEvent err) {
--                XERROR_SAVE(err);
--                if (err.get_error_code() == BadWindow) {
--                    return 0;
--                } else {
--                    return SAVED_ERROR_HANDLER(display, err);
--                }
--            }
--        };
-+    //---- END OF ERROR HANDLER CODE ----//
- 
- 
-     private native static void initIDs();
-@@ -269,17 +286,27 @@
- 
-             arrowCursor = XlibWrapper.XCreateFontCursor(XToolkit.getDisplay(),
-                 XCursorFontConstants.XC_arrow);
-+
-+            saved_error_handler = XlibWrapper.SetToolkitErrorHandler();
-+
-         } finally {
-             awtUnlock();
-         }
- 
--        if (log.isLoggable(Level.FINE)) {
--            Runtime.getRuntime().addShutdownHook(new Thread() {
--                    public void run() {
-+        Runtime.getRuntime().addShutdownHook(new Thread() {
-+            public void run() {
-+                if (log.isLoggable(Level.FINE)) {
-                         dumpPeers();
--                    }
--                });
--        }
-+                }
-+
-+                awtLock();
-+                try {
-+                        XlibWrapper.XSetErrorHandler(saved_error_handler);
-+                } finally {
-+                        awtUnlock();
-+                }
-+            }
-+        });
-     }
- 
-     static String getCorrectXIDString(String val) {
-@@ -2162,5 +2189,4 @@
-         return new XDesktopPeer();
-     }
- 
--    public static native void setNoisyXErrorHandler();
- }
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XTranslateCoordinates.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XTranslateCoordinates.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XTranslateCoordinates.java	2010-07-15 10:28:21.900105578 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XTranslateCoordinates.java	2010-07-15 10:28:42.666356882 -0400
-@@ -57,7 +57,7 @@
-         public int execute() {
-                 return execute(null);
-         }
--        public int execute(XToolkit.XErrorHandler errorHandler) {
-+        public int execute(XErrorHandler errorHandler) {
-                 XToolkit.awtLock();
-                 try {
-                 if (isDisposed()) {
-diff -uNr openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWM.java openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java
---- openjdk.orig/jdk/src/solaris/classes/sun/awt/X11/XWM.java	2010-07-15 10:28:21.896105637 -0400
-+++ openjdk/jdk/src/solaris/classes/sun/awt/X11/XWM.java	2010-07-15 10:28:42.668356704 -0400
-@@ -273,7 +273,7 @@
-             winmgr_running = false;
-             substruct.set_event_mask(XlibWrapper.SubstructureRedirectMask);
- 
--            XToolkit.WITH_XERROR_HANDLER(DetectWMHandler);
-+            XToolkit.WITH_XERROR_HANDLER(detectWMHandler);
-             XlibWrapper.XChangeWindowAttributes(XToolkit.getDisplay(),
-                                                 XToolkit.getDefaultRootWindow(),
-                                                 XlibWrapper.CWEventMask,
-@@ -318,7 +318,7 @@
-             new WindowPropertyGetter(window, XA_ENLIGHTENMENT_COMMS, 0, 14, false,
-                                      XAtom.XA_STRING);
-         try {
--            int status = getter.execute(XToolkit.IgnoreBadWindowHandler);
-+            int status = getter.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
-             if (status != XlibWrapper.Success || getter.getData() == 0) {
-                 return 0;
-             }
-@@ -442,7 +442,7 @@
-                 new WindowPropertyGetter(wmwin, XA_DT_SM_STATE_INFO, 0, 1,
-                                          false, XA_DT_SM_STATE_INFO);
-             try {
--                status = getter2.execute(XToolkit.IgnoreBadWindowHandler);
-+                status = getter2.execute(XErrorHandler.IgnoreBadWindowHandler.getInstance());
- 
- 
-                 if (status != XlibWrapper.Success || getter2.getData() == 0) {
-@@ -574,21 +574,6 @@
-     }
- 
-     /*
--     * Temporary error handler that ensures that we know if
--     * XChangeProperty succeeded or not.
--     */
--    static XToolkit.XErrorHandler VerifyChangePropertyHandler = new XToolkit.XErrorHandler() {
--            public int handleError(long display, XErrorEvent err) {
--                XToolkit.XERROR_SAVE(err);
--                if (err.get_request_code() == XlibWrapper.X_ChangeProperty) {
--                    return 0;
--                } else {
--                    return XToolkit.SAVED_ERROR_HANDLER(display, err);
--                }
--            }
--        };
--
--    /*
-      * Prepare IceWM check.
-      *
-      * The only way to detect IceWM, seems to be by setting
-@@ -623,7 +608,7 @@
- 
-         XToolkit.awtLock();
-         try {
--            XToolkit.WITH_XERROR_HANDLER(VerifyChangePropertyHandler);
-+            XToolkit.WITH_XERROR_HANDLER(XErrorHandler.VerifyChangePropertyHandler.getInstance());
-             XlibWrapper.XChangePropertyS(XToolkit.getDisplay(), XToolkit.getDefaultRootWindow(),
-                                          XA_ICEWM_WINOPTHINT.getAtom(),
-                                          XA_ICEWM_WINOPTHINT.getAtom(),
-@@ -691,20 +676,19 @@
-      * Temporary error handler that checks if selecting for
-      * SubstructureRedirect failed.
-      */
--    static boolean winmgr_running = false;
--    static XToolkit.XErrorHandler DetectWMHandler = new XToolkit.XErrorHandler() {
--            public int handleError(long display, XErrorEvent err) {
--                XToolkit.XERROR_SAVE(err);
--                if (err.get_request_code() == XlibWrapper.X_ChangeWindowAttributes
--                    && err.get_error_code() == XlibWrapper.BadAccess)
--                {
--                    winmgr_running = true;
--                    return 0;
--                } else {
--                    return XToolkit.SAVED_ERROR_HANDLER(display, err);
--                }
-+    private static boolean winmgr_running = false;
-+    private static XErrorHandler detectWMHandler = new XErrorHandler.XBaseErrorHandler() {
-+        @Override
-+        public int handleError(long display, XErrorEvent err) {
-+            if ((err.get_request_code() == XProtocolConstants.X_ChangeWindowAttributes) &&
-+                (err.get_error_code() == XConstants.BadAccess))
-+            {
-+                winmgr_running = true;
-+                return 0;
-             }
--        };
-+            return super.handleError(display, err);
-+        }
-+    };
- 
-     /*
-      * Make an educated guess about running window manager.
-diff -uNr openjdk.orig/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c
---- openjdk.orig/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c	2010-07-15 10:28:21.866105645 -0400
-+++ openjdk/jdk/src/solaris/native/sun/awt/awt_GraphicsEnv.c	2010-07-15 10:28:42.670355820 -0400
-@@ -175,42 +175,11 @@
- }
- 
- #ifndef HEADLESS
-+
- /*
-- * error handlers
-+ * XIOErrorHandler
-  */
--
--int
--xerror_handler(Display * disp, XErrorEvent * err)
--{
--/* #ifdef DEBUG */
--    char msg[128];
--    char buf[128];
--    char *ev = getenv("NOISY_AWT");
--
--    if (!ev || !ev[0])
--        return 0;
--    XGetErrorText(disp, err->error_code, msg, sizeof(msg));
--    jio_fprintf(stderr, "Xerror %s, XID %x, ser# %d\n", msg, err->resourceid, err->serial);
--    jio_snprintf(buf, sizeof(buf), "%d", err->request_code);
--    XGetErrorDatabaseText(disp, "XRequest", buf, "Unknown", msg, sizeof(msg));
--    jio_fprintf(stderr, "Major opcode %d (%s)\n", err->request_code, msg);
--    if (err->request_code > 128) {
--        jio_fprintf(stderr, "Minor opcode %d\n", err->minor_code);
--    }
--    if (awtLockInited) {
--        /*SignalError(lockedee->lastpc, lockedee, "fp/ade/gui/GUIException", msg); */
--    }
--    if (strcasecmp(ev, "abort") == 0) {
--        JNIEnv *env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
--
--        (*env)->FatalError(env, "xerror_handler abort");
--    }
--/* #endif */
--    return 0;
--}
--
--static int
--xioerror_handler(Display * disp)
-+static int xioerror_handler(Display *disp)
- {
-     if (awtLockInited) {
-         if (errno == EPIPE) {
-@@ -806,7 +775,6 @@
-         return NULL;
-     }
- 
--    XSetErrorHandler(xerror_handler);
-     XSetIOErrorHandler(xioerror_handler);
- 
-     /* set awt_numScreens, and whether or not we're using Xinerama */
-diff -uNr openjdk.orig/jdk/src/solaris/native/sun/awt/awt_InputMethod.c openjdk/jdk/src/solaris/native/sun/awt/awt_InputMethod.c
---- openjdk.orig/jdk/src/solaris/native/sun/awt/awt_InputMethod.c	2010-07-15 10:28:21.865105640 -0400
-+++ openjdk/jdk/src/solaris/native/sun/awt/awt_InputMethod.c	2010-07-15 10:28:42.671355975 -0400
-@@ -1458,7 +1458,6 @@
- }
- 
- static void OpenXIMCallback(Display *display, XPointer client_data, XPointer call_data) {
--    extern int xerror_handler();
-     XIMCallback ximCallback;
- 
-     X11im = XOpenIM(display, NULL, NULL, NULL);
-@@ -1469,13 +1468,6 @@
-     ximCallback.callback = (XIMProc)DestroyXIMCallback;
-     ximCallback.client_data = NULL;
-     XSetIMValues(X11im, XNDestroyCallback, &ximCallback, NULL);
--
--    /* Workaround for Solaris 2.6 bug 4097754. We're affected by this problem
--     * because Motif also calls XOpenIM for us. Re-registering the error handler
--     * that MToolkit has registered already after calling XOpenIM avoids the
--     * problem.
--     */
--    XSetErrorHandler(xerror_handler);
- }
- 
- static void DestroyXIMCallback(XIM im, XPointer client_data, XPointer call_data) {
-diff -uNr openjdk.orig/jdk/src/solaris/native/sun/awt/awt_MToolkit.c openjdk/jdk/src/solaris/native/sun/awt/awt_MToolkit.c
---- openjdk.orig/jdk/src/solaris/native/sun/awt/awt_MToolkit.c	2010-07-15 10:28:21.867105700 -0400
-+++ openjdk/jdk/src/solaris/native/sun/awt/awt_MToolkit.c	2010-07-15 10:28:42.673355929 -0400
-@@ -1926,26 +1926,6 @@
-               XtAppProcessEvent(awt_appContext, iMask & ~XtIMXEvent);
-             }
- 
--            /*
--            ** Bug #4361799: Forte4J sometimes crashes on Solaris:
--            ** There is an underlying bug in Selection.c in Xt lib.
--            ** The routine HandleSelectionEvents, can call EndProtectedSection()
--            ** more than  StartProtectedSection(), and then EndProtectedSection
--            ** will restore the default XError handler.  As a result awt's
--            ** XError handler gets removed and we later crash on an XError.
--            **
--            ** This happens when we call XtAppProcessEvent with event type 1e
--            ** (SelectionRequest) when running two copies of Forte
--            **
--            ** XSetErrorHandler can safely be called repeatedly, so we are
--            ** fixing this with the sledgehammer, and resetting our XError
--            ** handler every time through the loop:
--            */
--            {
--                extern int32_t xerror_handler();
--                XSetErrorHandler(xerror_handler);
--            }
--
- } /* processOneEvent() */
- 
- /*
-diff -uNr openjdk.orig/jdk/src/solaris/native/sun/xawt/XlibWrapper.c openjdk/jdk/src/solaris/native/sun/xawt/XlibWrapper.c
---- openjdk.orig/jdk/src/solaris/native/sun/xawt/XlibWrapper.c	2010-07-15 10:28:21.882105738 -0400
-+++ openjdk/jdk/src/solaris/native/sun/xawt/XlibWrapper.c	2010-07-15 10:28:42.675169363 -0400
-@@ -1097,7 +1097,7 @@
- static int ToolkitErrorHandler(Display * dpy, XErrorEvent * event) {
-     if (jvm != NULL) {
-         JNIEnv * env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
--        return JNU_CallStaticMethodByName(env, NULL, "sun/awt/X11/XToolkit", "GlobalErrorHandler", "(JJ)I",
-+        return JNU_CallStaticMethodByName(env, NULL, "sun/awt/X11/XToolkit", "globalErrorHandler", "(JJ)I",
-                                           ptr_to_jlong(dpy), ptr_to_jlong(event)).i;
-     } else {
-         return 0;
-@@ -1140,6 +1140,28 @@
-     return (*(XErrorHandler)jlong_to_ptr(handler))((Display*) jlong_to_ptr(display), (XErrorEvent*) jlong_to_ptr(event_ptr));
- }
- 
-+/*
-+ * Class:     sun_awt_X11_XlibWrapper
-+ * Method:    PrintXErrorEvent
-+ * Signature: (JJ)V
-+ */
-+JNIEXPORT void JNICALL Java_sun_awt_X11_XlibWrapper_PrintXErrorEvent
-+(JNIEnv *env, jclass clazz, jlong display, jlong event_ptr)
-+{
-+    char msg[128];
-+    char buf[128];
-+
-+    XErrorEvent* err = (XErrorEvent *)jlong_to_ptr(event_ptr);
-+
-+    XGetErrorText((Display *)jlong_to_ptr(display), err->error_code, msg, sizeof(msg));
-+    jio_fprintf(stderr, "Xerror %s, XID %x, ser# %d\n", msg, err->resourceid, err->serial);
-+    jio_snprintf(buf, sizeof(buf), "%d", err->request_code);
-+    XGetErrorDatabaseText((Display *)jlong_to_ptr(display), "XRequest", buf, "Unknown", msg, sizeof(msg));
-+    jio_fprintf(stderr, "Major opcode %d (%s)\n", err->request_code, msg);
-+    if (err->request_code > 128) {
-+        jio_fprintf(stderr, "Minor opcode %d\n", err->minor_code);
-+    }
-+}
- 
- 
- /*
-diff -uNr openjdk.orig/jdk/src/solaris/native/sun/xawt/XToolkit.c openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c
---- openjdk.orig/jdk/src/solaris/native/sun/xawt/XToolkit.c	2010-07-15 10:28:21.883105599 -0400
-+++ openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c	2010-07-15 10:28:42.676355933 -0400
-@@ -581,7 +581,6 @@
-         pollFds[1].revents = 0;
-     }
- 
--
-     AWT_NOFLUSH_UNLOCK();
- 
-     /* ACTUALLY DO THE POLL() */
-@@ -690,8 +689,6 @@
-     return ret;
- }
- 
--static XErrorHandler saved_error_handler = NULL;
--
- #ifdef __linux__
- void print_stack(void)
- {
-@@ -712,38 +709,6 @@
- }
- #endif
- 
--static int NoisyXErrorHandler(Display * dpy, XErrorEvent * event) {
--    fprintf(stderr, "id=%x, serial=%x, ec=%d, rc=%d, mc=%d\n",
--            event->resourceid, event->serial, event->error_code,
--            event->request_code, event->minor_code);
--    /*
--    #ifdef __linux__
--        print_stack();
--    #endif
--    */
--    if (jvm != NULL) {
--      JNIEnv * env = (JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2);
--      JNU_CallStaticMethodByName(env, NULL, "java/lang/Thread", "dumpStack", "()V");
--    }
--    if (!saved_error_handler) {
--        return saved_error_handler(dpy, event);
--    }
--    return 0;
--}
--
--/*
-- * Class:     sun_awt_X11_XToolkit
-- * Method:    setNoisyXErrorHandler
-- * Signature: ()V
-- */
--JNIEXPORT void JNICALL Java_sun_awt_X11_XToolkit_setNoisyXErrorHandler
--(JNIEnv *env , jclass clazz)
--{
--    (*env)->GetJavaVM(env, &jvm);
--    saved_error_handler = XSetErrorHandler(NoisyXErrorHandler);
--}
--
--
- Window get_xawt_root_shell(JNIEnv *env) {
-   static jclass classXRootWindow = NULL;
-   static jmethodID methodGetXRootWindow = NULL;