You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-10 13:00:37 +00:00
Fix JavaClassWrapper so it actually works
This commit is contained in:
@@ -30,6 +30,8 @@
|
||||
|
||||
#include "jni_utils.h"
|
||||
|
||||
#include "api/java_class_wrapper.h"
|
||||
|
||||
jvalret _variant_to_jvalue(JNIEnv *env, Variant::Type p_type, const Variant *p_arg, bool force_jobject) {
|
||||
jvalret v;
|
||||
|
||||
@@ -185,6 +187,16 @@ jvalret _variant_to_jvalue(JNIEnv *env, Variant::Type p_type, const Variant *p_a
|
||||
v.obj = arr;
|
||||
|
||||
} break;
|
||||
case Variant::OBJECT: {
|
||||
Ref<JavaObject> generic_object = *p_arg;
|
||||
if (generic_object.is_valid()) {
|
||||
jobject obj = env->NewLocalRef(generic_object->get_instance());
|
||||
v.val.l = obj;
|
||||
v.obj = obj;
|
||||
} else {
|
||||
v.val.i = 0;
|
||||
}
|
||||
} break;
|
||||
|
||||
default: {
|
||||
v.val.i = 0;
|
||||
@@ -358,9 +370,11 @@ Variant _jobject_to_variant(JNIEnv *env, jobject obj) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
Ref<JavaObject> generic_object(memnew(JavaObject(JavaClassWrapper::get_singleton()->wrap(name), obj)));
|
||||
|
||||
env->DeleteLocalRef(c);
|
||||
|
||||
return Variant();
|
||||
return generic_object;
|
||||
}
|
||||
|
||||
Variant::Type get_jni_type(const String &p_type) {
|
||||
@@ -395,10 +409,10 @@ Variant::Type get_jni_type(const String &p_type) {
|
||||
idx++;
|
||||
}
|
||||
|
||||
return Variant::NIL;
|
||||
return Variant::OBJECT;
|
||||
}
|
||||
|
||||
const char *get_jni_sig(const String &p_type) {
|
||||
String get_jni_sig(const String &p_type) {
|
||||
static struct {
|
||||
const char *name;
|
||||
const char *sig;
|
||||
@@ -430,5 +444,5 @@ const char *get_jni_sig(const String &p_type) {
|
||||
idx++;
|
||||
}
|
||||
|
||||
return "Ljava/lang/Object;";
|
||||
return "L" + p_type.replace(".", "/") + ";";
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user