attempt to make fastPaint method thread safe
authorjprocter <Jim Procter>
Wed, 7 Nov 2007 11:55:03 +0000 (11:55 +0000)
committerjprocter <Jim Procter>
Wed, 7 Nov 2007 11:55:03 +0000 (11:55 +0000)
src/jalview/gui/AnnotationPanel.java
src/jalview/gui/SeqCanvas.java

index afc09cc..07841d2 100755 (executable)
@@ -608,25 +608,30 @@ public class AnnotationPanel
     drawComponent(gg, av.startRes, av.endRes + 1);
     g.drawImage(image, 0, 0, this);
   }
-
+  boolean fpainting=false;
   /**
-   * DOCUMENT ME!
+   * Thread safe repaint
    *
-   * @param horizontal DOCUMENT ME!
+   * @param horizontal repaint with horizontal shift in alignment
    */
   public void fastPaint(int horizontal)
   {
+    
+    if (fpainting)
+      return;
+    fpainting=true;
+
     if ( (horizontal == 0)
         || gg == null
         || av.alignment.getAlignmentAnnotation() == null
         || av.alignment.getAlignmentAnnotation().length < 1
         || av.updatingConsensus
-        || av.updatingConservation)
+        || av.updatingConservation
+        ) // || fpainting)
     {
       repaint();
       return;
     }
-
     gg.copyArea(0, 0, imgWidth, getHeight(), -horizontal * av.charWidth, 0);
 
     int sr = av.startRes;
@@ -650,9 +655,8 @@ public class AnnotationPanel
     gg.translate( -transX, 0);
 
     fastPaint = true;
-
     repaint();
-
+    fpainting=false;
   }
 
   /**
index 389da75..cd7c231 100755 (executable)
@@ -209,15 +209,20 @@ public class SeqCanvas
       }
     }
   }
-
+  boolean fastpainting=false;
   /**
-   * DOCUMENT ME!
-   *
-   * @param horizontal DOCUMENT ME!
-   * @param vertical DOCUMENT ME!
+   * need to make this thread safe
+   * move alignment rendering in response to slider adjustment
+   * @param horizontal shift along
+   * @param vertical shift up or down in repaint
    */
   public void fastPaint(int horizontal, int vertical)
   {
+    if (fastpainting)
+    {
+      return;
+    }
+    fastpainting=true;
     if (gg == null)
     {
       return;
@@ -277,6 +282,7 @@ public class SeqCanvas
     gg.translate( -transX, -transY);
 
     repaint();
+    fastpainting=false;
   }
 
   /**