summaryrefslogtreecommitdiffstats
path: root/rs
diff options
context:
space:
mode:
authorJason Sams <jsams@google.com>2014-03-06 02:29:06 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-03-06 02:29:06 +0000
commit659a05a25c006359d8f119e7b66a9827b22e3c2a (patch)
treef85d986eba4d477d36ff806e77ca5deb765671f8 /rs
parent5cdb8d1d9951c0099316557327dbb91b32f886b6 (diff)
parentedf0b79d55df17fddb6b96de32f34ffccc8ec2d4 (diff)
downloadframeworks_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.java8
-rw-r--r--rs/java/android/renderscript/Script.java9
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));
}