MCPcopy Create free account
hub / github.com/SakuraEngine/SakuraEngine / schedule_job

Method schedule_job

modules/engine/runtime/src/ecs/scheduler.cpp:535–560  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

533}
534
535skr::task::event_t sugoi::scheduler_t::schedule_job(sugoi_query_t* query, sugoi_schedule_callback_t callback, void* u, sugoi_system_lifetime_callback_t init, sugoi_system_lifetime_callback_t teardown, sugoi_resource_operation_t* resources)
536{
537 skr::task::event_t result;
538 auto deps = update_dependencies(query, result, resources);
539 {
540 SkrZoneScopedN("AllocateCounter");
541 allCounter.add(1);
542 query->storage->counter.add(1);
543 }
544 skr::task::schedule([deps = std::move(deps), this, query, callback, u, init, teardown]()
545 {
546 for(auto dep : deps)
547 if(auto d = dep.lock())
548 d.wait(false);
549 SKR_DEFER({
550 allCounter.decrement();
551 query->storage->counter.decrement();
552 });
553 if(init)
554 init(u, 0);
555 callback(u, query);
556 if(teardown)
557 teardown(u, 0);
558 }, &result);
559 return result;
560}
561
562skr::stl_vector<skr::task::weak_event_t> sugoi::scheduler_t::update_dependencies(sugoi_query_t* query, const skr::task::event_t& counter, sugoi_resource_operation_t* resources)
563{

Callers 1

sugoiJ_schedule_customFunction · 0.80

Calls 7

scheduleFunction · 0.50
moveFunction · 0.50
initFunction · 0.50
addMethod · 0.45
lockMethod · 0.45
waitMethod · 0.45
decrementMethod · 0.45

Tested by

no test coverage detected