From: Bill Kuker Date: Thu, 2 Jul 2009 17:54:17 +0000 (+0000) Subject: Cache was not threadsafe X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=6c01ed238a5e54aa8fed15354f15a5b6a9e51c5d;p=sw%2Fmotorsim Cache was not threadsafe --- diff --git a/src/com/billkuker/rocketry/motorsim/grain/util/BurningShape.java b/src/com/billkuker/rocketry/motorsim/grain/util/BurningShape.java index 6bcd15d..af05a5c 100644 --- a/src/com/billkuker/rocketry/motorsim/grain/util/BurningShape.java +++ b/src/com/billkuker/rocketry/motorsim/grain/util/BurningShape.java @@ -170,10 +170,11 @@ public class BurningShape { private Area lastArea = null; public java.awt.geom.Area getShape(Amount regression) { - if ( regression.equals(lastRegression) ){ - return lastArea; + synchronized(this){ + if ( regression.equals(lastRegression) ){ + return lastArea; + } } - lastRegression = regression; java.awt.geom.Area a = new java.awt.geom.Area(); for (ShapeAndTrans st : plus){ @@ -195,7 +196,11 @@ public class BurningShape { a.subtract(new java.awt.geom.Area(s)); } - return lastArea = a; + synchronized(this){ + lastRegression = regression; + lastArea = a; + } + return a; } private Shape regress(Shape s, double mm, boolean plus) {