X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fjalview%2Fext%2Fjmol%2FJalviewJmolBinding.java;h=4ac247c9204f93257e4365bedc2cf8a988c19a1a;hb=fd8ca94295a0f1fe8300112b90439d19f8cb683e;hp=216c09ee70fd01d35f1670f6e8021101db8b39c2;hpb=0f8e8fef1abe7837642706ee5b5f97d3e1eda9db;p=jalview.git diff --git a/src/jalview/ext/jmol/JalviewJmolBinding.java b/src/jalview/ext/jmol/JalviewJmolBinding.java index 216c09e..4ac247c 100644 --- a/src/jalview/ext/jmol/JalviewJmolBinding.java +++ b/src/jalview/ext/jmol/JalviewJmolBinding.java @@ -326,7 +326,39 @@ public abstract class JalviewJmolBinding implements StructureListener, assert (_alignment.length == _refStructure.length && _alignment.length != _hiddenCols.length); String[] files = getPdbFile(); + // check to see if we are still waiting for Jmol files + long starttime=System.currentTimeMillis(); + boolean waiting=true; + do { + waiting=false; + for (String file:files) + { + try { + // HACK - in Jalview 2.8 this call may not be threadsafe so we catch + // every possible exception + StructureMapping[] sm = ssm.getMapping(file); + if (sm == null || sm.length == 0) + { + waiting = true; + } + } catch (Exception x) + { + waiting = true; + } catch (Error q) + { + waiting = true; + } + } + // we wait around for a reasonable time before we give up + } while (waiting && System.currentTimeMillis()<(10000+1000*files.length+starttime)); + if (waiting) + { + System.err.println("RUNTIME PROBLEM: Jmol seems to be taking a long time to process all the structures."); + return; + } StringBuffer selectioncom = new StringBuffer(); + + // union of all aligned positions are collected together. for (int a = 0; a < _alignment.length; a++) {