6857363: deadlock caused by sun.awt.X11.XTrayIconPeer$Tooltip.display
authordcherepanov
Mon, 28 Dec 2009 20:35:41 +0300
changeset 4830 34aa9ad0f200
parent 4829 21778cfb4353
child 4832 3a5dc2107fed
6857363: deadlock caused by sun.awt.X11.XTrayIconPeer$Tooltip.display Reviewed-by: ant, art
jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java
--- a/jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java	Tue Dec 22 17:28:52 2009 +0300
+++ b/jdk/src/solaris/classes/sun/awt/X11/InfoWindow.java	Mon Dec 28 20:35:41 2009 +0300
@@ -189,21 +189,22 @@
          * WARNING: this method is executed on Toolkit thread!
          */
         private void display() {
-            String tooltipString = liveArguments.getTooltipString();
-            if (tooltipString == null) {
-                return;
-            } else if (tooltipString.length() >  TOOLTIP_MAX_LENGTH) {
-                textLabel.setText(tooltipString.substring(0, TOOLTIP_MAX_LENGTH));
-            } else {
-                textLabel.setText(tooltipString);
-            }
-
             // Execute on EDT to avoid deadlock (see 6280857).
             SunToolkit.executeOnEventHandlerThread(target, new Runnable() {
                     public void run() {
                         if (liveArguments.isDisposed()) {
                             return;
                         }
+
+                        String tooltipString = liveArguments.getTooltipString();
+                        if (tooltipString == null) {
+                            return;
+                        } else if (tooltipString.length() >  TOOLTIP_MAX_LENGTH) {
+                            textLabel.setText(tooltipString.substring(0, TOOLTIP_MAX_LENGTH));
+                        } else {
+                            textLabel.setText(tooltipString);
+                        }
+
                         Point pointer = (Point)AccessController.doPrivileged(new PrivilegedAction() {
                                 public Object run() {
                                     if (!isPointerOverTrayIcon(liveArguments.getBounds())) {