* commit '24ea88a986cfb6de7197b213ad933a6eb6f0e285': Validate objects are from the correct context.
This commit is contained in:
@ -1004,6 +1004,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() {
|
void validate() {
|
||||||
if (mContext == 0) {
|
if (mContext == 0) {
|
||||||
throw new RSInvalidStateException("Calling RS with no Context active.");
|
throw new RSInvalidStateException("Calling RS with no Context active.");
|
||||||
|
@ -128,6 +128,9 @@ public class Script extends BaseObj {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v) {
|
protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v) {
|
||||||
|
mRS.validate();
|
||||||
|
mRS.validateObject(ain);
|
||||||
|
mRS.validateObject(aout);
|
||||||
if (ain == null && aout == null) {
|
if (ain == null && aout == null) {
|
||||||
throw new RSIllegalArgumentException(
|
throw new RSIllegalArgumentException(
|
||||||
"At least one of ain or aout is required to be non-null.");
|
"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) {
|
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) {
|
if (ain == null && aout == null) {
|
||||||
throw new RSIllegalArgumentException(
|
throw new RSIllegalArgumentException(
|
||||||
"At least one of ain or aout is required to be non-null.");
|
"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) {
|
public void bindAllocation(Allocation va, int slot) {
|
||||||
mRS.validate();
|
mRS.validate();
|
||||||
|
mRS.validateObject(va);
|
||||||
if (va != null) {
|
if (va != null) {
|
||||||
if (mRS.getApplicationContext().getApplicationInfo().targetSdkVersion >= 20) {
|
if (mRS.getApplicationContext().getApplicationInfo().targetSdkVersion >= 20) {
|
||||||
final Type t = va.mType;
|
final Type t = va.mType;
|
||||||
@ -263,6 +270,8 @@ public class Script extends BaseObj {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public void setVar(int index, BaseObj o) {
|
public void setVar(int index, BaseObj o) {
|
||||||
|
mRS.validate();
|
||||||
|
mRS.validateObject(o);
|
||||||
mRS.nScriptSetVarObj(getID(mRS), index, (o == null) ? 0 : o.getID(mRS));
|
mRS.nScriptSetVarObj(getID(mRS), index, (o == null) ? 0 : o.getID(mRS));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user