MayaFlux 1.0.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ spawn_inbound()

void MayaFlux::Portal::Forma::Bridge::spawn_inbound ( const ElementRef &  ref,
std::function< float()>  source 
)
private

Definition at line 66 of file Bridge.cpp.

67{
68 auto* rec = find_record(ref);
69 if (!rec) {
71 "Bridge::bind: unknown element id {}", ref.second);
72 return;
73 }
74
75 cancel_inbound(*rec);
76
77 auto name = make_task_name(ref.second, "inbound");
78 rec->inbound_task = name;
79
80 auto writer = rec->writer;
81
82 auto routine = [](Vruta::TaskScheduler&,
83 std::function<float()> src,
84 std::function<void(float)> write) -> Vruta::GraphicsRoutine {
85 auto& p = co_await Kriya::GetGraphicsPromise {};
86 while (!p.should_terminate) {
87 write(src());
88 co_await Kriya::FrameDelay { .frames_to_wait = 1 };
89 }
90 };
91
93 std::make_shared<Vruta::GraphicsRoutine>(
94 routine(m_scheduler, std::move(source), std::move(writer))),
95 name, false);
96}
#define MF_ERROR(comp, ctx,...)
const uint32_t * src
std::string name
Definition VKDevice.cpp:123
void write(std::shared_ptr< MappedState< T > > state, std::function< void(std::span< const float >)> sink)
Definition Bridge.hpp:138
Vruta::TaskScheduler & m_scheduler
Definition Bridge.hpp:693
void cancel_inbound(ElementRecord &rec)
Definition Bridge.cpp:428
std::string make_task_name(uint32_t id, const char *suffix) const
Definition Bridge.cpp:416
ElementRecord * find_record(const ElementRef &ref)
Definition Bridge.cpp:406
void add_task(const std::shared_ptr< Routine > &routine, const std::string &name="", bool initialize=false)
Add a routine to the scheduler based on its processing token.
Definition Scheduler.cpp:94
@ Init
Engine/subsystem initialization.
@ Portal
High-level user-facing API layer.
GetPromiseBase< Vruta::graphics_promise > GetGraphicsPromise
Graphics domain promise accessor.

References MayaFlux::Vruta::TaskScheduler::add_task(), cancel_inbound(), find_record(), MayaFlux::Kriya::FrameDelay::frames_to_wait, MayaFlux::Journal::Init, m_scheduler, make_task_name(), MF_ERROR, name, MayaFlux::Journal::Portal, src, and write().

Referenced by bind(), and bind().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: