JAL-1184 apparent deadlock when launching jalview on w7 - attempt to patch
[jalview.git] / src / jalview / gui / Desktop.java
index d1e8b6a..50f0095 100644 (file)
@@ -59,6 +59,7 @@ import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Hashtable;
@@ -2616,19 +2617,27 @@ public class Desktop extends jalview.jbgui.GDesktop implements
   /**
    * single thread that handles display of dialogs to user.
    */
-  ExecutorService dialogExecutor=null;
+  ExecutorService dialogExecutor=Executors.newSingleThreadExecutor();
   
   /**
    * add another dialog thread to the queue
    * @param prompter
    */
-  public synchronized void addDialogThread(Runnable prompter)
+  public void addDialogThread(final Runnable prompter)
   {
-    if (dialogExecutor==null)
+    dialogExecutor.submit(new Runnable()
     {
-      dialogExecutor = Executors.newSingleThreadExecutor();
-    }
-    dialogExecutor.submit(prompter);
+      public void run()
+      {
+        try
+        {
+          SwingUtilities.invokeAndWait(prompter);
+        } catch (Exception q)
+        {
+          Cache.log.warn("Unexpected Exception in dialog thread.", q);
+        }
+      }
+    });
   }
 
 }