drawSequence must be synchronized
authoramwaterhouse <Andrew Waterhouse>
Mon, 16 Apr 2007 11:24:16 +0000 (11:24 +0000)
committeramwaterhouse <Andrew Waterhouse>
Mon, 16 Apr 2007 11:24:16 +0000 (11:24 +0000)
src/jalview/appletgui/FeatureRenderer.java
src/jalview/gui/FeatureRenderer.java

index ff58125..b36fbfd 100755 (executable)
@@ -458,7 +458,7 @@ public class FeatureRenderer
   SequenceFeature[] sequenceFeatures;\r
   int sfSize, sfindex, spos, epos;\r
 \r
-  public void drawSequence(Graphics g, SequenceI seq,\r
+  synchronized public void drawSequence(Graphics g, SequenceI seq,\r
                            int start, int end, int y1)\r
   {\r
     if (seq.getSequenceFeatures() == null\r
index 04324ac..178dc38 100755 (executable)
@@ -119,7 +119,7 @@ public class FeatureRenderer
       }
     }
 
-    if (sequenceFeatures == null)
+    if (sequenceFeatures == null || sfSize==0)
     {
       return initialCol;
     }
@@ -196,9 +196,10 @@ public class FeatureRenderer
   SequenceFeature[] sequenceFeatures;
   int sfSize, sfindex, spos, epos;
 
-  public void drawSequence(Graphics g, SequenceI seq,
+  synchronized public void drawSequence(Graphics g, SequenceI seq,
                            int start, int end, int y1)
   {
+
     if (seq.getDatasetSequence().getSequenceFeatures() == null
         || seq.getDatasetSequence().getSequenceFeatures().length == 0)
     {
@@ -221,7 +222,6 @@ public class FeatureRenderer
       }
 
       sequenceFeatures = seq.getDatasetSequence().getSequenceFeatures();
-      sfSize = sequenceFeatures.length;
     }
 
     if (lastSeq == null || seq != lastSeq
@@ -229,7 +229,6 @@ public class FeatureRenderer
     {
       lastSeq = seq;
       sequenceFeatures = seq.getDatasetSequence().getSequenceFeatures();
-      sfSize = sequenceFeatures.length;
     }
 
     if (transparency != 1 && g != null)
@@ -246,6 +245,7 @@ public class FeatureRenderer
       epos = lastSeq.findPosition(end);
     }
 
+    sfSize = sequenceFeatures.length;
     String type;
     for (int renderIndex = 0; renderIndex < renderOrder.length; renderIndex++)
     {
@@ -260,10 +260,6 @@ public class FeatureRenderer
       // current feature to render
       for (sfindex = 0; sfindex < sfSize; sfindex++)
       {
-        if (sequenceFeatures.length <= sfindex)
-        {
-          continue;
-        }
         if (!sequenceFeatures[sfindex].type.equals(type))
         {
           continue;