|
@@ -697,11 +697,21 @@ Variant NativeScriptInstance::call(const StringName &p_method, const Variant **p
|
|
Map<StringName, NativeScriptDesc::Method>::Element *E = script_data->methods.find(p_method);
|
|
Map<StringName, NativeScriptDesc::Method>::Element *E = script_data->methods.find(p_method);
|
|
if (E) {
|
|
if (E) {
|
|
godot_variant result;
|
|
godot_variant result;
|
|
|
|
+
|
|
|
|
+#ifdef DEBUG_ENABLED
|
|
|
|
+ current_method_call = p_method;
|
|
|
|
+#endif
|
|
|
|
+
|
|
result = E->get().method.method((godot_object *)owner,
|
|
result = E->get().method.method((godot_object *)owner,
|
|
E->get().method.method_data,
|
|
E->get().method.method_data,
|
|
userdata,
|
|
userdata,
|
|
p_argcount,
|
|
p_argcount,
|
|
(godot_variant **)p_args);
|
|
(godot_variant **)p_args);
|
|
|
|
+
|
|
|
|
+#ifdef DEBUG_ENABLED
|
|
|
|
+ current_method_call = "";
|
|
|
|
+#endif
|
|
|
|
+
|
|
Variant res = *(Variant *)&result;
|
|
Variant res = *(Variant *)&result;
|
|
godot_variant_destroy(&result);
|
|
godot_variant_destroy(&result);
|
|
r_error.error = Variant::CallError::CALL_OK;
|
|
r_error.error = Variant::CallError::CALL_OK;
|
|
@@ -716,6 +726,15 @@ Variant NativeScriptInstance::call(const StringName &p_method, const Variant **p
|
|
}
|
|
}
|
|
|
|
|
|
void NativeScriptInstance::notification(int p_notification) {
|
|
void NativeScriptInstance::notification(int p_notification) {
|
|
|
|
+#ifdef DEBUG_ENABLED
|
|
|
|
+ if (p_notification == MainLoop::NOTIFICATION_CRASH) {
|
|
|
|
+ if (current_method_call != StringName("")) {
|
|
|
|
+ ERR_PRINTS("NativeScriptInstance detected crash on method: " + current_method_call);
|
|
|
|
+ current_method_call = "";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+#endif
|
|
|
|
+
|
|
Variant value = p_notification;
|
|
Variant value = p_notification;
|
|
const Variant *args[1] = { &value };
|
|
const Variant *args[1] = { &value };
|
|
call_multilevel("_notification", args, 1);
|
|
call_multilevel("_notification", args, 1);
|