Graph struct

Graph.

Contents

Public variables

Router* router
Pointer back to router for convenience.
int destroying
Flag to indicate if graph is currently getting destroyed.
GraphNode** graph_nodes
List of all graph nodes (only used for memory management)
GraphNode** init_trigger_list
Nodes without incoming edges.
gint terminal_node_count
Number of graph nodes without an outgoing edge.
GraphNode* terminal_nodes
Used only when constructing the graph so we can traverse the graph backwards to calculate the playback latencies.
gint terminal_refcnt
Remaining unprocessed terminal nodes in this cycle.
GraphNode** trigger_queue
Working trigger nodes to be updated while processing.
int trigger_queue_size
Max size - preallocated array.
ZixSem callback_start
Synchronization with main process callback.
ZixSem trigger
Wake up graph node process threads.
gint terminate
flag to exit, terminate all process-threads
int idle_thread_cnt
Number of threads waiting for work.
pthread_t main_thread
Threads.

Variable documentation

GraphNode** Graph::init_trigger_list

Nodes without incoming edges.

These run concurrently at the start of each cycle to kick off processing

pthread_t Graph::main_thread

Threads.

If backend is JACK, jack threads are used.