git://source.jalview.org
/
jalview.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
JAL-1118 - hack to try and get rid of flicker. consider moving greyed out image rende...
[jalview.git]
/
src
/
jalview
/
gui
/
AnnotationPanel.java
diff --git
a/src/jalview/gui/AnnotationPanel.java
b/src/jalview/gui/AnnotationPanel.java
index
e00483d
..
03fbf28
100755
(executable)
--- a/
src/jalview/gui/AnnotationPanel.java
+++ b/
src/jalview/gui/AnnotationPanel.java
@@
-66,7
+66,7
@@
public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
public BufferedImage image;
public BufferedImage image;
- public BufferedImage fadedImage;
+ public volatile BufferedImage fadedImage;
Graphics2D gg;
Graphics2D gg;
@@
-715,7
+715,7
@@
public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
}
}
}
}
-
+ private volatile boolean imageFresh=false;
/**
* DOCUMENT ME!
*
/**
* DOCUMENT ME!
*
@@
-758,9
+758,11
@@
public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
fm = gg.getFontMetrics();
gg.setColor(Color.white);
gg.fillRect(0, 0, imgWidth, image.getHeight());
fm = gg.getFontMetrics();
gg.setColor(Color.white);
gg.fillRect(0, 0, imgWidth, image.getHeight());
+ imageFresh=true;
}
drawComponent(gg, av.startRes, av.endRes + 1);
}
drawComponent(gg, av.startRes, av.endRes + 1);
+ imageFresh=false;
g.drawImage(image, 0, 0, this);
}
g.drawImage(image, 0, 0, this);
}
@@
-807,7
+809,7
@@
public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
repaint();
}
repaint();
}
-
+ private volatile boolean lastImageGood=false;
/**
* DOCUMENT ME!
*
/**
* DOCUMENT ME!
*
@@
-820,18
+822,21
@@
public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
*/
public void drawComponent(Graphics g, int startRes, int endRes)
{
*/
public void drawComponent(Graphics g, int startRes, int endRes)
{
+ BufferedImage oldFaded=fadedImage;
if (av.isCalcInProgress())
{
if (image == null)
{
if (av.isCalcInProgress())
{
if (image == null)
{
+ lastImageGood=false;
return;
}
// We'll keep a record of the old image,
// and draw a faded image until the calculation
// has completed
return;
}
// We'll keep a record of the old image,
// and draw a faded image until the calculation
// has completed
- if (fadedImage == null || fadedImage.getWidth() != imgWidth
- || fadedImage.getHeight() != image.getHeight())
+ if (lastImageGood && (fadedImage == null || fadedImage.getWidth() != imgWidth
+ || fadedImage.getHeight() != image.getHeight()))
{
{
+// System.err.println("redraw faded image ("+(fadedImage==null ? "null image" : "") + " lastGood="+lastImageGood+")");
fadedImage = new BufferedImage(imgWidth, image.getHeight(),
BufferedImage.TYPE_INT_RGB);
fadedImage = new BufferedImage(imgWidth, image.getHeight(),
BufferedImage.TYPE_INT_RGB);
@@
-845,10
+850,16
@@
public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
fadedG.drawImage(image, 0, 0, this);
}
fadedG.drawImage(image, 0, 0, this);
}
+ // make sure we don't overwrite the last good faded image until all calculations have finished
+ lastImageGood=false;
}
else
{
}
else
{
+ if (fadedImage!=null)
+ {
+ oldFaded=fadedImage;
+ }
fadedImage = null;
}
fadedImage = null;
}
@@
-874,7
+885,11
@@
public class AnnotationPanel extends JPanel implements AwtRenderPanelI,
return;
}
return;
}
- renderer.drawComponent(this, av, g, activeRow, startRes, endRes);
+ lastImageGood = renderer.drawComponent(this, av, g, activeRow, startRes, endRes);
+ if (!lastImageGood && fadedImage==null)
+ {
+ fadedImage=oldFaded;
+ }
}
@Override
}
@Override