changeset 2128:26280d1705b2

6857363: deadlock caused by sun.awt.X11.XTrayIconPeer$Tooltip.display Reviewed-by: ant, art
author dcherepanov
date Mon, 28 Dec 2009 20:35:41 +0300
parents 7b65af04d43c
children 4799006d0171
files src/solaris/classes/sun/awt/X11/InfoWindow.java
diffstat 1 files changed, 10 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/solaris/classes/sun/awt/X11/InfoWindow.java	Tue Dec 22 17:28:52 2009 +0300
+++ b/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())) {