From 949d6017fe1769da6f33ec4c0a158c9c8558a5bb Mon Sep 17 00:00:00 2001 From: Ben Steffensmeier Date: Wed, 3 Oct 2012 18:12:41 -0500 Subject: [PATCH] Issue #1146 clone DrawableImages so they are impossible to dispose. Former-commit-id: 1109ee5694bd1abbc46c85c69722ac9b37be0112 [formerly 1109ee5694bd1abbc46c85c69722ac9b37be0112 [formerly d2f1051380ce995126c31031dc1bbd85f31e0eb0]] Former-commit-id: ef6b9b0014fa05ccd0c28eefe4314c50edbfb2ba Former-commit-id: 60891f4e026567539c6e2c8930b9eb785f3d0be1 --- .../ext/KmlColormappedImageExtension.java | 5 +---- .../ext/KmlGroundOverlayGenerator.java | 18 +++++++++++++++++- .../graphics/ext/KmlMosaicImageExtension.java | 7 +------ .../graphics/ext/KmlRasterImageExtension.java | 5 +---- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlColormappedImageExtension.java b/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlColormappedImageExtension.java index 6196f229de..050999dfdc 100644 --- a/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlColormappedImageExtension.java +++ b/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlColormappedImageExtension.java @@ -99,11 +99,8 @@ public class KmlColormappedImageExtension extends private static class Generator extends KmlGroundOverlayGenerator { - private final DrawableImage[] images; - public Generator(float alpha, DrawableImage[] images) { - super(alpha); - this.images = images; + super(alpha, images); } @Override diff --git a/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlGroundOverlayGenerator.java b/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlGroundOverlayGenerator.java index 9b2ea32f6c..812f576d08 100644 --- a/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlGroundOverlayGenerator.java +++ b/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlGroundOverlayGenerator.java @@ -40,6 +40,8 @@ import com.raytheon.uf.common.geospatial.interpolation.Interpolation; import com.raytheon.uf.common.geospatial.interpolation.NearestNeighborInterpolation; import com.raytheon.uf.common.geospatial.interpolation.data.DataSource; import com.raytheon.uf.common.geospatial.interpolation.data.FloatArrayWrapper; +import com.raytheon.uf.viz.core.DrawableImage; +import com.raytheon.uf.viz.core.PixelCoverage; import com.raytheon.uf.viz.core.data.IColorMapDataRetrievalCallback.ColorMapData; import com.raytheon.uf.viz.core.data.prep.Colormapper; import com.raytheon.uf.viz.core.drawables.ColorMapParameters; @@ -74,7 +76,21 @@ public abstract class KmlGroundOverlayGenerator extends KmlFeatureGenerator { protected final double alpha; - public KmlGroundOverlayGenerator(double alpha) { + protected final DrawableImage[] images; + + public KmlGroundOverlayGenerator(double alpha, DrawableImage[] images) { + this.images = new DrawableImage[images.length]; + for (int i = 0; i < images.length; i += 1) { + // Clone the DrawableImage so that if whatever is drawing modifies + // or disposes of it then when the generator runs it will still draw + // what was rendered. + PixelCoverage oldCov = images[i].getCoverage(); + PixelCoverage newCov = new PixelCoverage(oldCov.getUl(), + oldCov.getUr(), oldCov.getLr(), oldCov.getLl()); + newCov.setMesh(oldCov.getMesh()); + this.images[i] = new DrawableImage(images[i].getImage(), newCov, + images[i].getMode()); + } this.alpha = alpha; } diff --git a/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlMosaicImageExtension.java b/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlMosaicImageExtension.java index 7967ad8f6d..4db641d995 100644 --- a/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlMosaicImageExtension.java +++ b/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlMosaicImageExtension.java @@ -19,7 +19,6 @@ **/ package com.raytheon.uf.viz.kml.export.graphics.ext; -import java.nio.ByteBuffer; import java.util.Arrays; import java.util.Comparator; @@ -34,7 +33,6 @@ import org.opengis.referencing.operation.TransformException; import com.raytheon.uf.common.geospatial.interpolation.Interpolation; import com.raytheon.uf.common.geospatial.interpolation.NearestNeighborInterpolation; import com.raytheon.uf.common.geospatial.interpolation.data.AbstractDataWrapper; -import com.raytheon.uf.common.geospatial.interpolation.data.ByteBufferWrapper; import com.raytheon.uf.common.geospatial.interpolation.data.DataDestination; import com.raytheon.uf.common.geospatial.interpolation.data.DataSource; import com.raytheon.uf.common.geospatial.interpolation.data.FloatArrayWrapper; @@ -121,11 +119,8 @@ public class KmlMosaicImageExtension extends private final ColorMapParameters parameters; - private final DrawableImage[] images; - public Generator(float alpha, KmlMosaicImage image) { - super(alpha); - this.images = image.getImagesToMosaic(); + super(alpha, image.getImagesToMosaic()); this.parameters = image.getColorMapParameters(); this.mosaicComparator = image.getMosaicComparator(); } diff --git a/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlRasterImageExtension.java b/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlRasterImageExtension.java index 1c6aaca87b..ff5c6c556a 100644 --- a/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlRasterImageExtension.java +++ b/cave/com.raytheon.uf.viz.kml.export/src/com/raytheon/uf/viz/kml/export/graphics/ext/KmlRasterImageExtension.java @@ -77,11 +77,8 @@ public class KmlRasterImageExtension extends private static class Generator extends KmlGroundOverlayGenerator { - private final DrawableImage[] images; - public Generator(float alpha, DrawableImage[] images) { - super(alpha); - this.images = images; + super(alpha, images); } @Override