mirror of
https://github.com/godotengine/godot
synced 2024-09-06 02:18:33 +00:00
Merge pull request #9914 from karroffel/nativescript-init-call
[NativeScript] fixed optional _init call
This commit is contained in:
commit
246b574909
|
@ -212,6 +212,12 @@ ScriptInstance *NativeScript::instance_create(Object *p_this) {
|
|||
#ifndef NO_THREADS
|
||||
owners_lock->unlock();
|
||||
#endif
|
||||
|
||||
// try to call _init
|
||||
// we don't care if it doesn't exist, so we ignore errors.
|
||||
Variant::CallError err;
|
||||
call("_init", NULL, 0, err);
|
||||
|
||||
return nsi;
|
||||
}
|
||||
|
||||
|
@ -412,24 +418,6 @@ Variant NativeScript::_new(const Variant **p_args, int p_argcount, Variant::Call
|
|||
return Variant();
|
||||
}
|
||||
|
||||
call("_init", p_args, p_argcount, r_error);
|
||||
|
||||
if (r_error.error != Variant::CallError::CALL_OK) {
|
||||
instance->script = Ref<NativeScript>();
|
||||
instance->owner->set_script_instance(NULL);
|
||||
|
||||
#ifndef NO_THREADS
|
||||
owners_lock->lock();
|
||||
#endif
|
||||
instance_owners.erase(owner);
|
||||
|
||||
#ifndef NO_THREADS
|
||||
owners_lock->unlock();
|
||||
#endif
|
||||
|
||||
ERR_FAIL_COND_V(r_error.error != Variant::CallError::CALL_OK, Variant());
|
||||
}
|
||||
|
||||
if (ref.is_valid()) {
|
||||
return ref;
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue