From: jprocter Date: Sat, 4 Apr 2009 11:17:16 +0000 (+0000) Subject: rejigged jmol check thread to run prior to data loading thread to avoid classloader... X-Git-Tag: Release_2_5~321 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=221f8d1d2054a4582dd3a4ca52f7708fccdf053c;p=jalview.git rejigged jmol check thread to run prior to data loading thread to avoid classloader race condition in java 1.6_10 (Sillitoe/Clegg/CATH issue) --- diff --git a/src/jalview/bin/JalviewLite.java b/src/jalview/bin/JalviewLite.java index cb8f4f7..9226dc4 100755 --- a/src/jalview/bin/JalviewLite.java +++ b/src/jalview/bin/JalviewLite.java @@ -305,6 +305,7 @@ public class JalviewLite extends Applet boolean embedded = false; private boolean checkForJmol = true; + private boolean checkedForJmol = false; // ensure we don't check for jmol every time the app is re-inited public boolean jmolAvailable = false; @@ -397,9 +398,6 @@ public class JalviewLite extends Applet } } - LoadJmolThread jmolAvailable = new LoadJmolThread(); - jmolAvailable.start(); - final JalviewLite applet = this; if (getParameter("embedded") != null && getParameter("embedded").equalsIgnoreCase("true")) @@ -540,8 +538,14 @@ public class JalviewLite extends Applet class LoadJmolThread extends Thread { + private boolean running=false; + public void run() { + if (running || checkedForJmol) { + return; + } + running=true; if (checkForJmol) { try @@ -569,6 +573,13 @@ public class JalviewLite extends Applet .println("Skipping Jmol check. Will use MCView (probably)"); } } + checkedForJmol=true; + running=false; + } + + public boolean notFinished() + { + return running || !checkedForJmol; } } @@ -590,7 +601,6 @@ public class JalviewLite extends Applet String format; JalviewLite applet; - private void dbgMsg(String msg) { if (applet.debug) @@ -638,6 +648,13 @@ public class JalviewLite extends Applet public void run() { + LoadJmolThread jmolchecker = new LoadJmolThread(); + jmolchecker.start(); + while (jmolchecker.notFinished()) + { + // wait around until the Jmol check is complete. + try { Thread.sleep(2); } catch (Exception e) {}; + } startLoading(); }