X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altosuilib%2FAltosSiteMapTile.java;h=f8b924a82cd7444ed74abf08a380271eb62a0a5b;hp=136fbd7a23095b00c7b7c2283fd6516e36e0077f;hb=52ce41952c5a3c31532fa4f0d1b3155a162b76f4;hpb=5c3991768d3cb17fc99ad32b2d6d8d11f0e37dfa diff --git a/altosuilib/AltosSiteMapTile.java b/altosuilib/AltosSiteMapTile.java index 136fbd7a..f8b924a8 100644 --- a/altosuilib/AltosSiteMapTile.java +++ b/altosuilib/AltosSiteMapTile.java @@ -155,9 +155,16 @@ public class AltosSiteMapTile extends JComponent { return String.format(format, distance); } - boolean painting; + int painting_serial; + int painted_serial; + + public void paint_graphics(Graphics2D g2d, Image image, int serial) { + + if (serial < painted_serial) + return; + + painted_serial = serial; - public void paint_graphics(Graphics2D g2d, Image image) { if (image != null) { AltosSiteMap.debug_component(this, "paint_graphics"); g2d.drawImage(image, 0, 0, null); @@ -239,7 +246,6 @@ public class AltosSiteMapTile extends JComponent { } g2d.drawString(message, x, y); } - painting = false; } public void paint(Graphics g) { @@ -247,26 +253,23 @@ public class AltosSiteMapTile extends JComponent { Image image = null; boolean queued = false; - if (painting) { - AltosSiteMap.debug_component(this, "already painting"); - return; - } AltosSiteMap.debug_component(this, "paint"); + ++painting_serial; + if (file != null) { AltosSiteMapImage aimage; aimage = AltosSiteMapCache.get_image(this, file, px_size, px_size); if (aimage != null) { - if (aimage.validate()) + if (aimage.validate(painting_serial)) image = aimage.image; else queued = true; } } if (!queued) - paint_graphics(g2d, image); - painting = queued; + paint_graphics(g2d, image, painting_serial); } public void show(int state, Point2D.Double last_pt, Point2D.Double pt)