Add dalvik code for forEach.
Change-Id: I26533fc553315b99b8f177ab62d9735a177b26b0
This commit is contained in:
@@ -420,6 +420,16 @@ public class RenderScript {
|
||||
validate();
|
||||
rsnScriptInvoke(mContext, id, slot);
|
||||
}
|
||||
native void rsnScriptForEach(int con, int id, int slot, int ain, int aout, byte[] params);
|
||||
native void rsnScriptForEach(int con, int id, int slot, int ain, int aout);
|
||||
synchronized void nScriptForEach(int id, int slot, int ain, int aout, byte[] params) {
|
||||
validate();
|
||||
if (params == null) {
|
||||
rsnScriptForEach(mContext, id, slot, ain, aout);
|
||||
} else {
|
||||
rsnScriptForEach(mContext, id, slot, ain, aout, params);
|
||||
}
|
||||
}
|
||||
native void rsnScriptInvokeV(int con, int id, int slot, byte[] params);
|
||||
synchronized void nScriptInvokeV(int id, int slot, byte[] params) {
|
||||
validate();
|
||||
|
||||
@@ -43,6 +43,35 @@ public class Script extends BaseObj {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
* Only intended for use by generated reflected code.
|
||||
*
|
||||
* @param slot
|
||||
* @param ain
|
||||
* @param aout
|
||||
* @param v
|
||||
*/
|
||||
protected void forEach(int slot, Allocation ain, Allocation aout, FieldPacker v) {
|
||||
if (ain == null && aout == null) {
|
||||
throw new RSIllegalArgumentException(
|
||||
"At least one of ain or aout is required to be non-null.");
|
||||
}
|
||||
int in_id = 0;
|
||||
if (ain != null) {
|
||||
in_id = ain.getID();
|
||||
}
|
||||
int out_id = 0;
|
||||
if (aout != null) {
|
||||
out_id = aout.getID();
|
||||
}
|
||||
byte[] params = null;
|
||||
if (v != null) {
|
||||
params = v.getData();
|
||||
}
|
||||
mRS.nScriptForEach(getID(), slot, in_id, out_id, params);
|
||||
}
|
||||
|
||||
|
||||
Script(int id, RenderScript rs) {
|
||||
super(id, rs);
|
||||
|
||||
@@ -866,6 +866,24 @@ nScriptInvokeV(JNIEnv *_env, jobject _this, RsContext con, jint script, jint slo
|
||||
_env->ReleaseByteArrayElements(data, ptr, JNI_ABORT);
|
||||
}
|
||||
|
||||
static void
|
||||
nScriptForEach(JNIEnv *_env, jobject _this, RsContext con,
|
||||
jint script, jint slot, jint ain, jint aout)
|
||||
{
|
||||
LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
|
||||
rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, NULL, 0);
|
||||
}
|
||||
static void
|
||||
nScriptForEachV(JNIEnv *_env, jobject _this, RsContext con,
|
||||
jint script, jint slot, jint ain, jint aout, jbyteArray params)
|
||||
{
|
||||
LOG_API("nScriptForEach, con(%p), s(%p), slot(%i)", con, (void *)script, slot);
|
||||
jint len = _env->GetArrayLength(params);
|
||||
jbyte *ptr = _env->GetByteArrayElements(params, NULL);
|
||||
rsScriptForEach(con, (RsScript)script, slot, (RsAllocation)ain, (RsAllocation)aout, ptr, len);
|
||||
_env->ReleaseByteArrayElements(params, ptr, JNI_ABORT);
|
||||
}
|
||||
|
||||
|
||||
// -----------------------------------
|
||||
|
||||
@@ -1235,6 +1253,8 @@ static JNINativeMethod methods[] = {
|
||||
{"rsnScriptSetTimeZone", "(II[B)V", (void*)nScriptSetTimeZone },
|
||||
{"rsnScriptInvoke", "(III)V", (void*)nScriptInvoke },
|
||||
{"rsnScriptInvokeV", "(III[B)V", (void*)nScriptInvokeV },
|
||||
{"rsnScriptForEach", "(IIIII)V", (void*)nScriptForEach },
|
||||
{"rsnScriptForEach", "(IIIII[B)V", (void*)nScriptForEachV },
|
||||
{"rsnScriptSetVarI", "(IIII)V", (void*)nScriptSetVarI },
|
||||
{"rsnScriptSetVarJ", "(IIIJ)V", (void*)nScriptSetVarJ },
|
||||
{"rsnScriptSetVarF", "(IIIF)V", (void*)nScriptSetVarF },
|
||||
|
||||
Reference in New Issue
Block a user