| 1519 | } |
| 1520 | |
| 1521 | Error Thread::start(const Callable &p_callable, Priority p_priority) { |
| 1522 | ERR_FAIL_COND_V_MSG(is_started(), ERR_ALREADY_IN_USE, "Thread already started."); |
| 1523 | ERR_FAIL_COND_V(!p_callable.is_valid(), ERR_INVALID_PARAMETER); |
| 1524 | ERR_FAIL_INDEX_V(p_priority, PRIORITY_MAX, ERR_INVALID_PARAMETER); |
| 1525 | |
| 1526 | ret = Variant(); |
| 1527 | target_callable = p_callable; |
| 1528 | running.set(); |
| 1529 | |
| 1530 | Ref<Thread> *ud = memnew(Ref<Thread>(this)); |
| 1531 | |
| 1532 | ::Thread::Settings s; |
| 1533 | s.priority = (::Thread::Priority)p_priority; |
| 1534 | thread.start(_start_func, ud, s); |
| 1535 | |
| 1536 | return OK; |
| 1537 | } |
| 1538 | |
| 1539 | String Thread::get_id() const { |
| 1540 | return itos(thread.get_id()); |