This file instantiates the classes that are provided by this plug-in.
|
|
template<typename N > |
| using | reflect_mapped_controls = typename avnd::mapped_control_input_introspection< N >::field_reflections_type |
| |
|
template<typename N > |
| using | reflect_controller_controls = boost::mp11::mp_copy_if< typename avnd::control_input_introspection< N >::field_reflections_type, controller_needs_factory > |
| | The controller fields that get a CustomGenericControl, and only those.
|
| |
|
template<typename BaseInletType , typename Node , typename T , typename FieldIndex > |
| using | ControlTypeToUse = std::conditional_t< avnd::controller_interaction_port< T >, CustomGenericControl< BaseInletType, Node, T, FieldIndex >, BaseInletType > |
| |
|
template<typename Node > |
| using | exec_base_node_t = std::conditional_t< avnd::has_worker< Node >, node_with_worker< Node >, node_with_ui_wakeups< Node > > |
| |
| template<typename Node > |
| using | exec_node_t = std::conditional_t< stops_with_extra_tick< Node >, node_with_deferred_stop< Node >, exec_base_node_t< Node > > |
| |
|
template<typename T > |
| using | pmf_member_type_t = typename pmf_member_type< T >::type |
| |
|
|
template<typename T > |
| void | custom_factories (std::vector< score::InterfaceBase * > &fx, const score::ApplicationContext &ctx, const score::InterfaceKey &key) |
| |
| double | scalarValue (const ossia::value &v) |
| |
|
double | normalizedValue (const Process::ControlInlet &port, const ossia::value &v) |
| | A control's value, normalized over its range.
|
| |
| template<typename Field > |
| ossia::value | resolveControlPath (const ossia::value &v, const score::DocumentContext &ctx) |
| |
| void | sendToTimeline (const Process::ProcessModel &proc, const score::DocumentContext &ctx, const halp::timeline_clip &clip) |
| |
| template<typename... T> |
| void | free_on_main_thread (const std::weak_ptr< Execution::GCCommandQueue > &gcq, T &... t) |
| |
| template<typename Node > |
| std::function< void(QByteArray)> | ui_to_processor_bus (Node &eff, std::weak_ptr< Execution::ExecutionCommandQueue > qex_ptr, std::weak_ptr< Execution::GCCommandQueue > gcq) |
| |
| QMimeData * | make_drag_mime (const halp::drag_payload &payload) |
| |
|
void | hideAllInlets (Process::ProcessModel &proc, bool outlets) |
| | A fully custom item shows the inlets it wants; the node shows its outlets.
|
| |
|
template<typename T > |
| void | setupNewPort (Process::Port *obj) |
| |
|
template<std::size_t N, typename T > |
| void | setupNewPort (const avnd::field_reflection< N, T > &spec, Process::Port *obj) |
| |
|
template<typename T > |
| void | setupNewPort (const T &spec, Process::Port *obj) |
| |
|
void | inplaceMirror (unsigned char *bytes, int width, int height, int bytes_per_pixel) |
| |
|
template<avnd::cpu_texture Tex> |
| void | loadInputTexture (QRhi &rhi, auto &m_readbacks, Tex &cpu_tex, int k) |
| |
| template<typename Object , typename Delivery > |
| void | bind_worker (Object &obj, std::weak_ptr< Object > obj_wp, Delivery deliver) |
| |
|
void | instantiate_aether (std::vector< score::InterfaceBase * > &fx, const score::ApplicationContext &ctx, const score::InterfaceKey &key) |
| |
|
void | instantiate_convolver (std::vector< score::InterfaceBase * > &fx, const score::ApplicationContext &ctx, const score::InterfaceKey &key) |
| |
|
void | instantiate_audiofilters (std::vector< score::InterfaceBase * > &fx, const score::ApplicationContext &ctx, const score::InterfaceKey &key) |
| |
|
void | instantiate_tests (std::vector< score::InterfaceBase * > &fx, const score::ApplicationContext &ctx, const score::InterfaceKey &key) |
| |
|
void | instantiate_tests2 (std::vector< score::InterfaceBase * > &fx, const score::ApplicationContext &ctx, const score::InterfaceKey &key) |
| |
|
template<typename F > |
| QGraphicsItem * | makeidget (const F &field, QGraphicsItem *parent) |
| |
|
template<> |
| void | custom_factories< grph::Graph > (std::vector< score::InterfaceBase * > &fx, const score::ApplicationContext &ctx, const score::InterfaceKey &key) |
| |
template<typename Object , typename Delivery >
| void oscr::bind_worker |
( |
Object & |
obj, |
|
|
std::weak_ptr< Object > |
obj_wp, |
|
|
Delivery |
deliver |
|
) |
| |
Binds an avendish object's worker: request() posts a job to score::TaskPool, which runs Object::worker::work(args...) unless the object is gone by then. A non-empty result is handed, on the pool thread, to deliver as a closure that applies it to the object if the object is still alive. The bindings differ only in how the closure reaches the object's processing thread, which is the Delivery's business:
struct Delivery { // On the requesting thread, when the job is posted. The Job lives // until the job has run, on the pool thread, and is destroyed there. Job begin(); }; struct Job { // On the pool thread, with the closure. template <typename F> void operator()(F&& apply); };
The UI to processor bus of an object: what the view sends is decoded here, on the UI thread, and reaches process_message() through the execution queue, in the order it was sent. Nothing is allocated or freed on the audio thread: a message that owns memory travels in a block made here, and the block comes back through the GC queue once the processor has seen it.
A process_message() that takes its message by value frees what it does not keep on the audio thread; taking it by reference avoids that.