diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/engine.h | 7 | ||||
-rw-r--r-- | include/internal.h | 28 |
2 files changed, 29 insertions, 6 deletions
diff --git a/include/engine.h b/include/engine.h index 5106713..3e869af 100644 --- a/include/engine.h +++ b/include/engine.h @@ -144,6 +144,13 @@ struct _jack_engine { JSList *clients_waiting; JSList *reserved_client_names; + /* Double linked list of clients in running order */ + jack_client_internal_t *execlist_head; + jack_client_internal_t *execlist_tail; +#define EXECLIST_ORDER 1 /* Re-order clients */ +#define EXECLIST_CYCLE 2 /* Check cycles */ + int execlist_request; + jack_port_internal_t *internal_ports; jack_client_internal_t *timebase_client; jack_port_buffer_info_t *silent_buffer; diff --git a/include/internal.h b/include/internal.h index ed2202d..1bff379 100644 --- a/include/internal.h +++ b/include/internal.h @@ -452,6 +452,18 @@ struct _jack_request { int32_t status; } POST_PACKED_STRUCTURE; + +/* Data used by the algorithm determining running order + * of clients. + */ +typedef struct _jack_feedcounts { + struct _jack_feedcounts *next; + struct _jack_client_internal *client; + int fwd_count; + int rev_count; +} jack_feedcounts_t; + + /* Per-client structure allocated in the server's address space. * It's here because its not part of the engine structure. */ @@ -464,14 +476,18 @@ typedef struct _jack_client_internal { int event_fd; int subgraph_start_fd; int subgraph_wait_fd; - JSList *ports; /* protected by engine->client_lock */ - JSList *truefeeds; /* protected by engine->client_lock */ - JSList *sortfeeds; /* protected by engine->client_lock */ - int fedcount; - int tfedcount; + + /* protected by engine->client_lock */ + JSList *ports; + + jack_feedcounts_t *feedlist; + struct _jack_client_internal *execlist_next; + struct _jack_client_internal *execlist_prev; + int depcount; + int depcheck; + jack_shm_info_t control_shm; unsigned long execution_order; - struct _jack_client_internal *next_client; /* not a linked list! */ dlhandle handle; int (*initialize)(jack_client_t*, const char*); /* int. clients only */ void (*finish)(void *); /* internal clients only */ |