apply version 2.7 copyright
[jalview.git] / src / jalview / javascript / JSFunctionExec.java
index 8eb0bd9..93b35e5 100644 (file)
@@ -1,3 +1,20 @@
+/*******************************************************************************
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7)
+ * Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
+ *
+ * This file is part of Jalview.
+ *
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * Jalview 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 for more details.
+ *
+ * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ *******************************************************************************/
 package jalview.javascript;\r
 \r
 import java.net.URL;\r
@@ -9,7 +26,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 +35,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 +52,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