From 6bdfe0fc5c0845f91cf3ccad961d270ed2a49aa1 Mon Sep 17 00:00:00 2001 From: Yang Ni Date: Mon, 18 Apr 2016 16:56:16 -0700 Subject: Made Element accessors thread-safe Bug: 28177082 Change-Id: I8f3f2d8ce559e93cba29f8eedd5b95d1389deb23 (cherry picked from commit 33703f0c4e9b16bda5fd72e71d7d89359ee0db17) --- rs/java/android/renderscript/Sampler.java | 162 ++++++++++++++++++------------ 1 file changed, 99 insertions(+), 63 deletions(-) (limited to 'rs/java/android/renderscript/Sampler.java') diff --git a/rs/java/android/renderscript/Sampler.java b/rs/java/android/renderscript/Sampler.java index 5c4bae99ba8f..70e88bc51f79 100644 --- a/rs/java/android/renderscript/Sampler.java +++ b/rs/java/android/renderscript/Sampler.java @@ -98,13 +98,17 @@ public class Sampler extends BaseObj { * @return Sampler */ public static Sampler CLAMP_NEAREST(RenderScript rs) { - if(rs.mSampler_CLAMP_NEAREST == null) { - Builder b = new Builder(rs); - b.setMinification(Value.NEAREST); - b.setMagnification(Value.NEAREST); - b.setWrapS(Value.CLAMP); - b.setWrapT(Value.CLAMP); - rs.mSampler_CLAMP_NEAREST = b.create(); + if (rs.mSampler_CLAMP_NEAREST == null) { + synchronized (rs) { + if (rs.mSampler_CLAMP_NEAREST == null) { + Builder b = new Builder(rs); + b.setMinification(Value.NEAREST); + b.setMagnification(Value.NEAREST); + b.setWrapS(Value.CLAMP); + b.setWrapT(Value.CLAMP); + rs.mSampler_CLAMP_NEAREST = b.create(); + } + } } return rs.mSampler_CLAMP_NEAREST; } @@ -118,13 +122,17 @@ public class Sampler extends BaseObj { * @return Sampler */ public static Sampler CLAMP_LINEAR(RenderScript rs) { - if(rs.mSampler_CLAMP_LINEAR == null) { - Builder b = new Builder(rs); - b.setMinification(Value.LINEAR); - b.setMagnification(Value.LINEAR); - b.setWrapS(Value.CLAMP); - b.setWrapT(Value.CLAMP); - rs.mSampler_CLAMP_LINEAR = b.create(); + if (rs.mSampler_CLAMP_LINEAR == null) { + synchronized (rs) { + if (rs.mSampler_CLAMP_LINEAR == null) { + Builder b = new Builder(rs); + b.setMinification(Value.LINEAR); + b.setMagnification(Value.LINEAR); + b.setWrapS(Value.CLAMP); + b.setWrapT(Value.CLAMP); + rs.mSampler_CLAMP_LINEAR = b.create(); + } + } } return rs.mSampler_CLAMP_LINEAR; } @@ -138,13 +146,17 @@ public class Sampler extends BaseObj { * @return Sampler */ public static Sampler CLAMP_LINEAR_MIP_LINEAR(RenderScript rs) { - if(rs.mSampler_CLAMP_LINEAR_MIP_LINEAR == null) { - Builder b = new Builder(rs); - b.setMinification(Value.LINEAR_MIP_LINEAR); - b.setMagnification(Value.LINEAR); - b.setWrapS(Value.CLAMP); - b.setWrapT(Value.CLAMP); - rs.mSampler_CLAMP_LINEAR_MIP_LINEAR = b.create(); + if (rs.mSampler_CLAMP_LINEAR_MIP_LINEAR == null) { + synchronized (rs) { + if (rs.mSampler_CLAMP_LINEAR_MIP_LINEAR == null) { + Builder b = new Builder(rs); + b.setMinification(Value.LINEAR_MIP_LINEAR); + b.setMagnification(Value.LINEAR); + b.setWrapS(Value.CLAMP); + b.setWrapT(Value.CLAMP); + rs.mSampler_CLAMP_LINEAR_MIP_LINEAR = b.create(); + } + } } return rs.mSampler_CLAMP_LINEAR_MIP_LINEAR; } @@ -158,13 +170,17 @@ public class Sampler extends BaseObj { * @return Sampler */ public static Sampler WRAP_NEAREST(RenderScript rs) { - if(rs.mSampler_WRAP_NEAREST == null) { - Builder b = new Builder(rs); - b.setMinification(Value.NEAREST); - b.setMagnification(Value.NEAREST); - b.setWrapS(Value.WRAP); - b.setWrapT(Value.WRAP); - rs.mSampler_WRAP_NEAREST = b.create(); + if (rs.mSampler_WRAP_NEAREST == null) { + synchronized (rs) { + if (rs.mSampler_WRAP_NEAREST == null) { + Builder b = new Builder(rs); + b.setMinification(Value.NEAREST); + b.setMagnification(Value.NEAREST); + b.setWrapS(Value.WRAP); + b.setWrapT(Value.WRAP); + rs.mSampler_WRAP_NEAREST = b.create(); + } + } } return rs.mSampler_WRAP_NEAREST; } @@ -178,13 +194,17 @@ public class Sampler extends BaseObj { * @return Sampler */ public static Sampler WRAP_LINEAR(RenderScript rs) { - if(rs.mSampler_WRAP_LINEAR == null) { - Builder b = new Builder(rs); - b.setMinification(Value.LINEAR); - b.setMagnification(Value.LINEAR); - b.setWrapS(Value.WRAP); - b.setWrapT(Value.WRAP); - rs.mSampler_WRAP_LINEAR = b.create(); + if (rs.mSampler_WRAP_LINEAR == null) { + synchronized (rs) { + if (rs.mSampler_WRAP_LINEAR == null) { + Builder b = new Builder(rs); + b.setMinification(Value.LINEAR); + b.setMagnification(Value.LINEAR); + b.setWrapS(Value.WRAP); + b.setWrapT(Value.WRAP); + rs.mSampler_WRAP_LINEAR = b.create(); + } + } } return rs.mSampler_WRAP_LINEAR; } @@ -198,13 +218,17 @@ public class Sampler extends BaseObj { * @return Sampler */ public static Sampler WRAP_LINEAR_MIP_LINEAR(RenderScript rs) { - if(rs.mSampler_WRAP_LINEAR_MIP_LINEAR == null) { - Builder b = new Builder(rs); - b.setMinification(Value.LINEAR_MIP_LINEAR); - b.setMagnification(Value.LINEAR); - b.setWrapS(Value.WRAP); - b.setWrapT(Value.WRAP); - rs.mSampler_WRAP_LINEAR_MIP_LINEAR = b.create(); + if (rs.mSampler_WRAP_LINEAR_MIP_LINEAR == null) { + synchronized (rs) { + if (rs.mSampler_WRAP_LINEAR_MIP_LINEAR == null) { + Builder b = new Builder(rs); + b.setMinification(Value.LINEAR_MIP_LINEAR); + b.setMagnification(Value.LINEAR); + b.setWrapS(Value.WRAP); + b.setWrapT(Value.WRAP); + rs.mSampler_WRAP_LINEAR_MIP_LINEAR = b.create(); + } + } } return rs.mSampler_WRAP_LINEAR_MIP_LINEAR; } @@ -218,13 +242,17 @@ public class Sampler extends BaseObj { * @return Sampler */ public static Sampler MIRRORED_REPEAT_NEAREST(RenderScript rs) { - if(rs.mSampler_MIRRORED_REPEAT_NEAREST == null) { - Builder b = new Builder(rs); - b.setMinification(Value.NEAREST); - b.setMagnification(Value.NEAREST); - b.setWrapS(Value.MIRRORED_REPEAT); - b.setWrapT(Value.MIRRORED_REPEAT); - rs.mSampler_MIRRORED_REPEAT_NEAREST = b.create(); + if (rs.mSampler_MIRRORED_REPEAT_NEAREST == null) { + synchronized (rs) { + if (rs.mSampler_MIRRORED_REPEAT_NEAREST == null) { + Builder b = new Builder(rs); + b.setMinification(Value.NEAREST); + b.setMagnification(Value.NEAREST); + b.setWrapS(Value.MIRRORED_REPEAT); + b.setWrapT(Value.MIRRORED_REPEAT); + rs.mSampler_MIRRORED_REPEAT_NEAREST = b.create(); + } + } } return rs.mSampler_MIRRORED_REPEAT_NEAREST; } @@ -238,13 +266,17 @@ public class Sampler extends BaseObj { * @return Sampler */ public static Sampler MIRRORED_REPEAT_LINEAR(RenderScript rs) { - if(rs.mSampler_MIRRORED_REPEAT_LINEAR == null) { - Builder b = new Builder(rs); - b.setMinification(Value.LINEAR); - b.setMagnification(Value.LINEAR); - b.setWrapS(Value.MIRRORED_REPEAT); - b.setWrapT(Value.MIRRORED_REPEAT); - rs.mSampler_MIRRORED_REPEAT_LINEAR = b.create(); + if (rs.mSampler_MIRRORED_REPEAT_LINEAR == null) { + synchronized (rs) { + if (rs.mSampler_MIRRORED_REPEAT_LINEAR == null) { + Builder b = new Builder(rs); + b.setMinification(Value.LINEAR); + b.setMagnification(Value.LINEAR); + b.setWrapS(Value.MIRRORED_REPEAT); + b.setWrapT(Value.MIRRORED_REPEAT); + rs.mSampler_MIRRORED_REPEAT_LINEAR = b.create(); + } + } } return rs.mSampler_MIRRORED_REPEAT_LINEAR; } @@ -258,13 +290,17 @@ public class Sampler extends BaseObj { * @return Sampler */ public static Sampler MIRRORED_REPEAT_LINEAR_MIP_LINEAR(RenderScript rs) { - if(rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR == null) { - Builder b = new Builder(rs); - b.setMinification(Value.LINEAR_MIP_LINEAR); - b.setMagnification(Value.LINEAR); - b.setWrapS(Value.MIRRORED_REPEAT); - b.setWrapT(Value.MIRRORED_REPEAT); - rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR = b.create(); + if (rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR == null) { + synchronized (rs) { + if (rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR == null) { + Builder b = new Builder(rs); + b.setMinification(Value.LINEAR_MIP_LINEAR); + b.setMagnification(Value.LINEAR); + b.setWrapS(Value.MIRRORED_REPEAT); + b.setWrapT(Value.MIRRORED_REPEAT); + rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR = b.create(); + } + } } return rs.mSampler_MIRRORED_REPEAT_LINEAR_MIP_LINEAR; } -- cgit v1.2.3