This is my function that, given an object and a field, sets an array into this field with the giveen array
static void createFillAndSetIntArrayField(JNIEnv *env, jobject *javaInstance, jfieldID* field, int *array, int arrayLength)
{
jintArray intJavaArray = env->NewIntArray(arrayLength);
env->SetIntArrayRegion(intJavaArray, 0, arrayLength, array);
env->SetObjectField(*javaInstance, *field, intJavaArray);
}
and I'm calling like this
JniUtils::createFillAndSetIntArrayField(env, &pixelFormatInstance, &yuvInternalFormat, pixelFormat_->yuvInternalFormat, 3);
But in Java I get an array of all 0s
I'm sure that pixelFormatInstance
exists. What am I possibly doing wrong?
UPDATE:
Following the suggestions:
static void createFillAndSetIntArrayField(JNIEnv *env, jobject *javaInstance, jfieldID *field, int *array, int arrayLength)
{
jintArray intJavaArray = env->NewIntArray(arrayLength);
jint fill[arrayLength];
for (int i = 0; i < arrayLength; i++)
{
fill[i] = array[i];
}
env->SetIntArrayRegion(intJavaArray, 0, arrayLength, fill);
env->SetObjectField(*javaInstance, *field, intJavaArray);
}
But I'm still getting 0