From 221f8d1d2054a4582dd3a4ca52f7708fccdf053c Mon Sep 17 00:00:00 2001 From: jprocter Date: Sat, 4 Apr 2009 11:17:16 +0000 Subject: [PATCH] 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) --- src/jalview/bin/JalviewLite.java | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) 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(); } -- 1.7.10.2