63 using NodePtr = std::unique_ptr<score::gfx::Node>;
68 int32_t register_node(NodePtr node);
69 int32_t register_preview_node(NodePtr node);
70 void connect_preview_node(
EdgeSpec e);
71 void disconnect_preview_node(
EdgeSpec e);
72 void unregister_node(int32_t idx);
73 void unregister_preview_node(int32_t idx);
75 void recompute_edges();
76 void recompute_graph();
77 void recompute_connections();
84 tick_messages.enqueue(std::move(msg));
90 void remove_preview_output();
93 void remove_node(std::vector<std::unique_ptr<score::gfx::Node>>& nursery, int32_t
id);
99 std::atomic_int32_t index{1};
100 ossia::hash_map<int32_t, NodePtr> nodes;
116 std::unique_ptr<score::gfx::Node> node;
123 CONNECT_PREVIEW_NODE,
124 DISCONNECT_PREVIEW_NODE
129 using Command = ossia::variant<NodeCommand, EdgeCommand>;
130 moodycamel::ConcurrentQueue<Command> tick_commands;
131 moodycamel::ConcurrentQueue<score::gfx::Message> tick_messages;
133 std::mutex edges_lock;
134 ossia::flat_set<EdgeSpec> new_edges TS_GUARDED_BY(edges_lock);
135 ossia::flat_set<EdgeSpec> edges;
136 ossia::flat_set<EdgeSpec> preview_edges;
137 std::atomic_bool edges_changed{};
142 ossia::small_flat_map<score::HighResolutionTimer*, ossia::flat_set<score::gfx::OutputNode*>, 8> m_manualTimers;
144 ossia::object_pool<std::vector<score::gfx::gfx_input>> m_buffers;
Definition GfxContext.hpp:59
Base class for sink nodes (QWindow, spout, syphon, NDI output, ...)
Definition OutputNode.hpp:31
Definition DocumentContext.hpp:18