refactor to allow distinct StructureSelectionManager instances for
[jalview.git] / src / jalview / javascript / JSFunctionExec.java
index 8eb0bd9..6f7fc43 100644 (file)
@@ -9,7 +9,7 @@ import jalview.bin.JalviewLite;
 \r
 public class JSFunctionExec implements Runnable\r
 {\r
-  JalviewLite jvlite;\r
+  public JalviewLite jvlite;\r
 \r
   public JSFunctionExec(JalviewLite applet)\r
   {\r
@@ -18,7 +18,15 @@ public class JSFunctionExec implements Runnable
     jsExecQueue = jvlite.getJsExecQueue();\r
     jvlite.setExecutor(this);\r
   }\r
-\r
+  public void finalize() {\r
+    jvlite=null;\r
+    executor=null;\r
+    if (jsExecQueue!=null)\r
+    {\r
+      jsExecQueue.clear();\r
+    }\r
+    jsExecQueue=null;\r
+  }\r
   private Vector jsExecQueue;\r
 \r
   private Thread executor = null;\r
@@ -27,18 +35,27 @@ public class JSFunctionExec implements Runnable
   {\r
     if (jsExecQueue != null)\r
     {\r
+      Vector<JSFunctionExec> q=null;\r
       synchronized (jsExecQueue)\r
       {\r
-        Vector q = jsExecQueue;\r
-        q.removeAllElements();\r
+        q = jsExecQueue;\r
         jsExecQueue = null;\r
+      }\r
+      if (q!=null ) {\r
+        for (JSFunctionExec jx : q)\r
+        {\r
+          jx.jvlite=null;\r
+          \r
+        }\r
+        q.removeAllElements();\r
         synchronized (q)\r
         {\r
           q.notifyAll();\r
         }\r
       }\r
-      executor = null;\r
     }\r
+    jvlite=null;\r
+    executor = null;\r
   }\r
 \r
   public void run()\r