Browse Source

Add JNI variant conversion for generic Array

Serhii Snitsaruk 3 months ago
parent
commit
1bea370df7
1 changed files with 16 additions and 0 deletions
  1. 16 0
      platform/android/jni_utils.cpp

+ 16 - 0
platform/android/jni_utils.cpp

@@ -199,6 +199,22 @@ jvalret _variant_to_jvalue(JNIEnv *env, Variant::Type p_type, const Variant *p_a
 			v.obj = jdict;
 		} break;
 
+		case Variant::ARRAY: {
+			Array array = *p_arg;
+			jobjectArray arr = env->NewObjectArray(array.size(), env->FindClass("java/lang/Object"), nullptr);
+
+			for (int j = 0; j < array.size(); j++) {
+				Variant var = array[j];
+				jvalret valret = _variant_to_jvalue(env, var.get_type(), &var, true);
+				env->SetObjectArrayElement(arr, j, valret.val.l);
+				if (valret.obj) {
+					env->DeleteLocalRef(valret.obj);
+				}
+			}
+			v.val.l = arr;
+			v.obj = arr;
+		} break;
+
 		case Variant::PACKED_INT32_ARRAY: {
 			Vector<int> array = *p_arg;
 			jintArray arr = env->NewIntArray(array.size());