]> git.gag.com Git - sw/motorsim/commitdiff
Cache was not threadsafe
authorBill Kuker <bkuker@billkuker.com>
Thu, 2 Jul 2009 17:54:17 +0000 (17:54 +0000)
committerBill Kuker <bkuker@billkuker.com>
Thu, 2 Jul 2009 17:54:17 +0000 (17:54 +0000)
src/com/billkuker/rocketry/motorsim/grain/util/BurningShape.java

index 6bcd15da9e3e3e83ea7280b1d683225fafd81769..af05a5cd0caa9aa5558767c08216ae244cc30b56 100644 (file)
@@ -170,10 +170,11 @@ public class BurningShape {
        private Area lastArea = null;\r
        \r
        public java.awt.geom.Area getShape(Amount<Length> regression) {\r
-               if ( regression.equals(lastRegression) ){\r
-                       return lastArea;\r
+               synchronized(this){\r
+                       if ( regression.equals(lastRegression) ){\r
+                               return lastArea;\r
+                       }\r
                }\r
-               lastRegression = regression;\r
 \r
                java.awt.geom.Area a = new java.awt.geom.Area();\r
                for (ShapeAndTrans st : plus){\r
@@ -195,7 +196,11 @@ public class BurningShape {
                        a.subtract(new java.awt.geom.Area(s));\r
                }\r
                \r
-               return lastArea = a;\r
+               synchronized(this){\r
+                       lastRegression = regression;\r
+                       lastArea = a;\r
+               }\r
+               return a;\r
        }\r
        \r
        private Shape regress(Shape s, double mm, boolean plus) {\r