|
@@ -437,6 +437,7 @@ public:
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
int ac = E->get().argtypes.size();
|
|
int ac = E->get().argtypes.size();
|
|
if (ac<p_argcount) {
|
|
if (ac<p_argcount) {
|
|
|
|
|
|
@@ -455,7 +456,6 @@ public:
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
for(int i=0;i<p_argcount;i++) {
|
|
for(int i=0;i<p_argcount;i++) {
|
|
|
|
|
|
if (!Variant::can_convert(p_args[i]->get_type(),E->get().argtypes[i])) {
|
|
if (!Variant::can_convert(p_args[i]->get_type(),E->get().argtypes[i])) {
|
|
@@ -476,6 +476,10 @@ public:
|
|
|
|
|
|
JNIEnv *env = ThreadAndroid::get_env();
|
|
JNIEnv *env = ThreadAndroid::get_env();
|
|
|
|
|
|
|
|
+ int res = env->PushLocalFrame(16);
|
|
|
|
+
|
|
|
|
+ ERR_FAIL_COND_V(res!=0,Variant());
|
|
|
|
+
|
|
//print_line("argcount "+String::num(p_argcount));
|
|
//print_line("argcount "+String::num(p_argcount));
|
|
List<jobject> to_erase;
|
|
List<jobject> to_erase;
|
|
for(int i=0;i<p_argcount;i++) {
|
|
for(int i=0;i<p_argcount;i++) {
|
|
@@ -568,6 +572,7 @@ public:
|
|
|
|
|
|
|
|
|
|
print_line("failure..");
|
|
print_line("failure..");
|
|
|
|
+ env->PopLocalFrame(NULL);
|
|
ERR_FAIL_V(Variant());
|
|
ERR_FAIL_V(Variant());
|
|
} break;
|
|
} break;
|
|
}
|
|
}
|
|
@@ -576,6 +581,8 @@ public:
|
|
env->DeleteLocalRef(to_erase.front()->get());
|
|
env->DeleteLocalRef(to_erase.front()->get());
|
|
to_erase.pop_front();
|
|
to_erase.pop_front();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ env->PopLocalFrame(NULL);
|
|
//print_line("success");
|
|
//print_line("success");
|
|
|
|
|
|
return ret;
|
|
return ret;
|
|
@@ -1613,11 +1620,15 @@ JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_method(JNIEnv * env, jobj
|
|
|
|
|
|
JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_callobject(JNIEnv * env, jobject p_obj, jint ID, jstring method, jobjectArray params) {
|
|
JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_callobject(JNIEnv * env, jobject p_obj, jint ID, jstring method, jobjectArray params) {
|
|
|
|
|
|
- String str_method = env->GetStringUTFChars( method, NULL );
|
|
|
|
-
|
|
|
|
Object* obj = ObjectDB::get_instance(ID);
|
|
Object* obj = ObjectDB::get_instance(ID);
|
|
ERR_FAIL_COND(!obj);
|
|
ERR_FAIL_COND(!obj);
|
|
|
|
|
|
|
|
+ int res = env->PushLocalFrame(16);
|
|
|
|
+ ERR_FAIL_COND(res!=0);
|
|
|
|
+
|
|
|
|
+ String str_method = env->GetStringUTFChars( method, NULL );
|
|
|
|
+
|
|
|
|
+
|
|
int count = env->GetArrayLength(params);
|
|
int count = env->GetArrayLength(params);
|
|
Variant* vlist = (Variant*)alloca(sizeof(Variant) * count);
|
|
Variant* vlist = (Variant*)alloca(sizeof(Variant) * count);
|
|
Variant** vptr = (Variant**)alloca(sizeof(Variant*) * count);
|
|
Variant** vptr = (Variant**)alloca(sizeof(Variant*) * count);
|
|
@@ -1637,15 +1648,22 @@ JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_callobject(JNIEnv * env,
|
|
Variant::CallError err;
|
|
Variant::CallError err;
|
|
obj->call(str_method, (const Variant**)vptr, count, err);
|
|
obj->call(str_method, (const Variant**)vptr, count, err);
|
|
// something
|
|
// something
|
|
|
|
+
|
|
|
|
+ env->PopLocalFrame(NULL);
|
|
|
|
+
|
|
};
|
|
};
|
|
|
|
|
|
JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_calldeferred(JNIEnv * env, jobject p_obj, jint ID, jstring method, jobjectArray params) {
|
|
JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_calldeferred(JNIEnv * env, jobject p_obj, jint ID, jstring method, jobjectArray params) {
|
|
|
|
|
|
- String str_method = env->GetStringUTFChars( method, NULL );
|
|
|
|
|
|
|
|
Object* obj = ObjectDB::get_instance(ID);
|
|
Object* obj = ObjectDB::get_instance(ID);
|
|
ERR_FAIL_COND(!obj);
|
|
ERR_FAIL_COND(!obj);
|
|
|
|
|
|
|
|
+ int res = env->PushLocalFrame(16);
|
|
|
|
+ ERR_FAIL_COND(res!=0);
|
|
|
|
+
|
|
|
|
+ String str_method = env->GetStringUTFChars( method, NULL );
|
|
|
|
+
|
|
int count = env->GetArrayLength(params);
|
|
int count = env->GetArrayLength(params);
|
|
Variant args[VARIANT_ARG_MAX];
|
|
Variant args[VARIANT_ARG_MAX];
|
|
|
|
|
|
@@ -1666,6 +1684,8 @@ JNIEXPORT void JNICALL Java_com_android_godot_GodotLib_calldeferred(JNIEnv * env
|
|
|
|
|
|
obj->call_deferred(str_method, args[0],args[1],args[2],args[3],args[4]);
|
|
obj->call_deferred(str_method, args[0],args[1],args[2],args[3],args[4]);
|
|
// something
|
|
// something
|
|
|
|
+ env->PopLocalFrame(NULL);
|
|
|
|
+
|
|
};
|
|
};
|
|
|
|
|
|
//Main::cleanup();
|
|
//Main::cleanup();
|