24class DspGraphDispatcher final
27 using RunFunctionWithEngineLock = std::function<void (std::function<
void ()>)>;
30 std::unique_ptr<graph::IGraphBuilder> graph_builder,
31 std::vector<graph::IProcessable *> terminal_processables,
32 const juce::AudioDeviceManager &device_manager,
33 RunFunctionWithEngineLock run_function_with_engine_lock,
54 bool realtime_context)
noexcept [[clang::nonblocking]];
68 return process_kickoff_thread_.has_value ()
69 ? current_thread_id.get () == process_kickoff_thread_.value ()
79 static thread_local bool have_result =
false;
82 if (have_result) [[likely]]
87 if (!scheduler_) [[unlikely]]
94 if (scheduler_->contains_thread (current_thread_id.get ()))
114 return scheduler_->get_nodes ().trigger_nodes_;
135 [[clang::nonblocking]];
138 std::unique_ptr<graph::IGraphBuilder> graph_builder_;
139 const juce::AudioDeviceManager &device_manager_;
145 RunFunctionWithEngineLock run_function_with_engine_lock_;
150 std::vector<graph::IProcessable *> terminal_processables_;
152 std::unique_ptr<graph::GraphScheduler> scheduler_;
155 nframes_t max_route_playback_latency_ = 0;
168 std::optional<unsigned int> process_kickoff_thread_;