diff options
Diffstat (limited to 'rs/jni/android_renderscript_RenderScript.cpp')
-rw-r--r-- | rs/jni/android_renderscript_RenderScript.cpp | 30 |
1 files changed, 6 insertions, 24 deletions
diff --git a/rs/jni/android_renderscript_RenderScript.cpp b/rs/jni/android_renderscript_RenderScript.cpp index be7071e05044..113241da4572 100644 --- a/rs/jni/android_renderscript_RenderScript.cpp +++ b/rs/jni/android_renderscript_RenderScript.cpp @@ -393,7 +393,6 @@ nClosureCreate(JNIEnv *_env, jobject _this, jlong con, jlong kernelID, size_t numValues, numDependencies; RsScriptFieldID* fieldIDs; - uintptr_t* values; RsClosure* depClosures; RsScriptFieldID* depFieldIDs; @@ -430,15 +429,6 @@ nClosureCreate(JNIEnv *_env, jobject _this, jlong con, jlong kernelID, fieldIDs[i] = (RsScriptFieldID)jFieldIDs[i]; } - values = (uintptr_t*)alloca(sizeof(uintptr_t) * numValues); - if (values == nullptr) { - goto exit; - } - - for (size_t i = 0; i < numValues; i++) { - values[i] = (uintptr_t)jValues[i]; - } - depClosures = (RsClosure*)alloca(sizeof(RsClosure) * numDependencies); if (depClosures == nullptr) { goto exit; @@ -459,7 +449,7 @@ nClosureCreate(JNIEnv *_env, jobject _this, jlong con, jlong kernelID, ret = (jlong)(uintptr_t)rsClosureCreate( (RsContext)con, (RsScriptKernelID)kernelID, (RsAllocation)returnValue, - fieldIDs, numValues, values, numValues, + fieldIDs, numValues, jValues, numValues, (int*)jSizes, numValues, depClosures, numDependencies, depFieldIDs, numDependencies); @@ -511,7 +501,6 @@ nInvokeClosureCreate(JNIEnv *_env, jobject _this, jlong con, jlong invokeID, size_t numValues; RsScriptFieldID* fieldIDs; - uintptr_t* values; if (fieldIDs_length != values_length || values_length != sizes_length) { ALOGE("Unmatched field IDs, values, and sizes in closure creation."); @@ -534,18 +523,9 @@ nInvokeClosureCreate(JNIEnv *_env, jobject _this, jlong con, jlong invokeID, fieldIDs[i] = (RsScriptFieldID)jFieldIDs[i]; } - values = (uintptr_t*)alloca(sizeof(uintptr_t) * numValues); - if (values == nullptr) { - goto exit; - } - - for (size_t i = 0; i < numValues; i++) { - values[i] = (uintptr_t)jValues[i]; - } - ret = (jlong)(uintptr_t)rsInvokeClosureCreate( (RsContext)con, (RsScriptInvokeID)invokeID, jParams, jParamLength, - fieldIDs, numValues, values, numValues, + fieldIDs, numValues, jValues, numValues, (int*)jSizes, numValues); exit: @@ -561,15 +541,17 @@ exit: static void nClosureSetArg(JNIEnv *_env, jobject _this, jlong con, jlong closureID, jint index, jlong value, jint size) { + // Size is signed with -1 indicating the value is an Allocation rsClosureSetArg((RsContext)con, (RsClosure)closureID, (uint32_t)index, - (uintptr_t)value, (size_t)size); + (uintptr_t)value, size); } static void nClosureSetGlobal(JNIEnv *_env, jobject _this, jlong con, jlong closureID, jlong fieldID, jlong value, jint size) { + // Size is signed with -1 indicating the value is an Allocation rsClosureSetGlobal((RsContext)con, (RsClosure)closureID, - (RsScriptFieldID)fieldID, (uintptr_t)value, (size_t)size); + (RsScriptFieldID)fieldID, (int64_t)value, size); } static long |