Beast - Music Synthesizer and Composer  0.11.1+10.g2da35
bseengineschedule.hh
Go to the documentation of this file.
1  // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html
2 #ifndef __BSE_ENGINE_SCHEDULE_H__
3 #define __BSE_ENGINE_SCHEDULE_H__
4 
5 #include <bse/bseenginenode.hh>
6 
7 typedef struct
8 {
9  EngineNode *last; /* resolve node */
10  SfiRing *nodes; /* of type EngineNode* */
11  guint seen_deferred_node : 1;
12 } EngineCycle;
13 typedef struct
14 {
15  guint leaf_level;
16  SfiRing *cycles; /* of type Cycle* */
17  SfiRing *cycle_nodes; /* of type EngineNode* */
18 } EngineQuery;
20 {
21  guint n_items;
22  guint leaf_levels;
23  SfiRing **nodes; /* EngineNode* */
24  SfiRing **cycles; /* SfiRing* */
25  guint secured : 1;
26  guint in_pqueue : 1;
27  guint cur_leaf_level;
28  SfiRing *cur_node;
29  SfiRing *cur_cycle;
30  SfiRing *vnodes; /* virtual modules */
31 };
32 #define BSE_ENGINE_SCHEDULE_NONPOPABLE(schedule) ((schedule)->cur_leaf_level >= (schedule)->leaf_levels)
33 
34 
35 /* --- MasterThread --- */
36 EngineSchedule* _engine_schedule_new (void);
37 void _engine_schedule_clear (EngineSchedule *schedule);
38 void _engine_schedule_destroy (EngineSchedule *schedule);
39 void _engine_schedule_consumer_node (EngineSchedule *schedule,
40  EngineNode *node);
41 void _engine_schedule_secure (EngineSchedule *schedule);
42 EngineNode* _engine_schedule_pop_node (EngineSchedule *schedule);
43 SfiRing* _engine_schedule_pop_cycle (EngineSchedule *schedule);
44 void _engine_schedule_restart (EngineSchedule *schedule);
45 void _engine_schedule_unsecure (EngineSchedule *schedule);
46 
47 #endif /* __BSE_ENGINE_SCHEDULE_H__ */
Definition: bseengineschedule.hh:19
Definition: bseengineschedule.hh:7
Definition: sfiring.hh:21
Definition: bseengineschedule.hh:13