diff options
author | Jason Sams <jsams@google.com> | 2014-03-06 02:29:06 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-03-06 02:29:06 +0000 |
commit | 659a05a25c006359d8f119e7b66a9827b22e3c2a (patch) | |
tree | f85d986eba4d477d36ff806e77ca5deb765671f8 /rs | |
parent | 5cdb8d1d9951c0099316557327dbb91b32f886b6 (diff) | |
parent | edf0b79d55df17fddb6b96de32f34ffccc8ec2d4 (diff) | |
download | frameworks_base-659a05a25c006359d8f119e7b66a9827b22e3c2a.zip frameworks_base-659a05a25c006359d8f119e7b66a9827b22e3c2a.tar.gz frameworks_base-659a05a25c006359d8f119e7b66a9827b22e3c2a.tar.bz2 |
am edf0b79d: am 24ea88a9: am 9a9916b5: am 2383f220: Merge "Validate objects are from the correct context."
* commit 'edf0b79d55df17fddb6b96de32f34ffccc8ec2d4':
Validate objects are from the correct context.
Diffstat (limited to 'rs')
-rw-r--r-- | rs/java/android/renderscript/RenderScript.java | 8 | ||||
-rw-r--r-- | rs/java/android/renderscript/Script.java | 9 |
2 files changed, 17 insertions, 0 deletions
diff --git a/rs/java/android/renderscript/RenderScript.java b/rs/java/android/renderscript/RenderScript.java index 4dd6045..d4fa5a7 100644 --- a/rs/java/android/renderscript/RenderScript.java +++ b/rs/java/android/renderscript/RenderScript.java @@ -1000,6 +1000,14 @@ public class RenderScript { } } + void validateObject(BaseObj o) { + if (o != null) { + if (o.mRS != this) { + throw new RSIllegalArgumentException("Attempting to use an object across contexts."); + } + } + } + void validate() { if (mContext == 0) { throw new RSInvalidStateException("Calling RS with no Context active."); diff --git a/rs/java/android/renderscript/Script.java b/rs/java/android/renderscript/Script.java index a1f2287..0e46f94 100644 --- a/rs/java/android/renderscript/Script.java +++ b/rs/java/android/renderscript/Script.java @@ -128,6 +128,9 @@ public class Script extends BaseObj { * */ protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v) { + mRS.validate(); + mRS.validateObject(ain); + mRS.validateObject(aout); if (ain == null && aout == null) { throw new RSIllegalArgumentException( "At least one of ain or aout is required to be non-null."); @@ -152,6 +155,9 @@ public class Script extends BaseObj { * */ protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v, LaunchOptions sc) { + mRS.validate(); + mRS.validateObject(ain); + mRS.validateObject(aout); if (ain == null && aout == null) { throw new RSIllegalArgumentException( "At least one of ain or aout is required to be non-null."); @@ -187,6 +193,7 @@ public class Script extends BaseObj { */ public void bindAllocation(Allocation va, int slot) { mRS.validate(); + mRS.validateObject(va); if (va != null) { if (mRS.getApplicationContext().getApplicationInfo().targetSdkVersion >= 20) { final Type t = va.mType; @@ -263,6 +270,8 @@ public class Script extends BaseObj { * */ public void setVar(int index, BaseObj o) { + mRS.validate(); + mRS.validateObject(o); mRS.nScriptSetVarObj(getID(mRS), index, (o == null) ? 0 : o.getID(mRS)); } |