Handle custom Callables in Thread.start()

This commit is contained in:
kobewi 2022-07-01 12:48:58 +02:00
parent daec5bed57
commit 7d5c943202
1 changed files with 3 additions and 2 deletions

View File

@ -1840,13 +1840,14 @@ void Thread::_start_func(void *ud) {
ERR_FAIL_MSG(vformat("Could not call function '%s' on previously freed instance to start thread %s.", t->target_callable.get_method(), t->get_id())); ERR_FAIL_MSG(vformat("Could not call function '%s' on previously freed instance to start thread %s.", t->target_callable.get_method(), t->get_id()));
} }
::Thread::set_name(t->target_callable.get_method()); String func_name = t->target_callable.is_custom() ? t->target_callable.get_custom()->get_as_text() : String(t->target_callable.get_method());
::Thread::set_name(func_name);
Callable::CallError ce; Callable::CallError ce;
t->target_callable.call(nullptr, 0, t->ret, ce); t->target_callable.call(nullptr, 0, t->ret, ce);
if (ce.error != Callable::CallError::CALL_OK) { if (ce.error != Callable::CallError::CALL_OK) {
t->running.clear(); t->running.clear();
ERR_FAIL_MSG("Could not call function '" + t->target_callable.get_method().operator String() + "' to start thread " + t->get_id() + ": " + Variant::get_callable_error_text(t->target_callable, nullptr, 0, ce) + "."); ERR_FAIL_MSG("Could not call function '" + func_name + "' to start thread " + t->get_id() + ": " + Variant::get_callable_error_text(t->target_callable, nullptr, 0, ce) + ".");
} }
t->running.clear(); t->running.clear();