From 6d5394dc71bd51a19f9debb05636e72774349dae Mon Sep 17 00:00:00 2001 From: Ben Steffensmeier Date: Wed, 3 Oct 2012 15:02:16 -0500 Subject: [PATCH] Issue #1152 synchronize preload for MemoryBasedTileSet. Former-commit-id: 2d0615067b1c232ab4a79e02f707bc611d1052dc [formerly 4f679955b848f5c6de3e61207c152eca9959d2d7] Former-commit-id: 5fe4533e87d3494633a92cb82c7af9d49413e6a0 --- .../viz/core/rsc/hdf5/MemoryBasedTileSet.java | 37 +++++++++++-------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/cave/com.raytheon.viz.core/src/com/raytheon/viz/core/rsc/hdf5/MemoryBasedTileSet.java b/cave/com.raytheon.viz.core/src/com/raytheon/viz/core/rsc/hdf5/MemoryBasedTileSet.java index 3768231f00..47968ca8a6 100644 --- a/cave/com.raytheon.viz.core/src/com/raytheon/viz/core/rsc/hdf5/MemoryBasedTileSet.java +++ b/cave/com.raytheon.viz.core/src/com/raytheon/viz/core/rsc/hdf5/MemoryBasedTileSet.java @@ -49,7 +49,7 @@ import com.raytheon.uf.viz.core.rsc.capabilities.ColorMapCapability; * * This memory-based tileset pulls a small raster from an hdf5 file and * interpolates it to a larger size. The raster is then split once it is already - * loaded in memory. + * loaded in memory.git pull * *
  * 
@@ -116,23 +116,28 @@ public class MemoryBasedTileSet extends AbstractTileSet {
      */
     @Override
     protected void preloadDataObject(int level) throws StorageException {
-        IDataRecord rec = getDataRecord();
+        synchronized (isLoaded) {
+            if (isLoaded[level]) {
+                return;
+            }
+            IDataRecord rec = getDataRecord();
 
-        if (loadedData == null) {
-            loadedData = new Object[levels];
-            dims = new int[levels][];
+            if (loadedData == null) {
+                loadedData = new Object[levels];
+                dims = new int[levels][];
+            }
+
+            if (rec != null) {
+
+                loadedData[level] = rec.getDataObject();
+
+                long[] d = rec.getSizes();
+                dims[level] = new int[] { (int) d[0], (int) d[1] };
+
+            }
+
+            isLoaded[level] = true;
         }
-
-        if (rec != null) {
-
-            loadedData[level] = rec.getDataObject();
-
-            long[] d = rec.getSizes();
-            dims[level] = new int[] { (int) d[0], (int) d[1] };
-
-        }
-
-        isLoaded[level] = true;
     }
 
     protected IDataRecord getDataRecord() throws StorageException {