BEAST - Free Software Audio Synthesizer and Tracker  0.10.0
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 G_BEGIN_DECLS
8 
9 typedef struct
10 {
11  EngineNode *last; /* resolve node */
12  SfiRing *nodes; /* of type EngineNode* */
13  guint seen_deferred_node : 1;
14 } EngineCycle;
15 typedef struct
16 {
17  guint leaf_level;
18  SfiRing *cycles; /* of type Cycle* */
19  SfiRing *cycle_nodes; /* of type EngineNode* */
20 } EngineQuery;
22 {
23  guint n_items;
24  guint leaf_levels;
25  SfiRing **nodes; /* EngineNode* */
26  SfiRing **cycles; /* SfiRing* */
27  guint secured : 1;
28  guint in_pqueue : 1;
29  guint cur_leaf_level;
30  SfiRing *cur_node;
31  SfiRing *cur_cycle;
32  SfiRing *vnodes; /* virtual modules */
33 };
34 #define BSE_ENGINE_SCHEDULE_NONPOPABLE(schedule) ((schedule)->cur_leaf_level >= (schedule)->leaf_levels)
35 
36 
37 /* --- MasterThread --- */
38 EngineSchedule* _engine_schedule_new (void);
39 void _engine_schedule_clear (EngineSchedule *schedule);
40 void _engine_schedule_destroy (EngineSchedule *schedule);
41 void _engine_schedule_consumer_node (EngineSchedule *schedule,
42  EngineNode *node);
43 void _engine_schedule_secure (EngineSchedule *schedule);
44 EngineNode* _engine_schedule_pop_node (EngineSchedule *schedule);
45 SfiRing* _engine_schedule_pop_cycle (EngineSchedule *schedule);
46 void _engine_schedule_restart (EngineSchedule *schedule);
47 void _engine_schedule_unsecure (EngineSchedule *schedule);
48 
49 G_END_DECLS
50 
51 #endif /* __BSE_ENGINE_SCHEDULE_H__ */
Definition: bseengineschedule.hh:21
Definition: bseengineschedule.hh:9
Definition: sfiring.hh:23
Definition: bseengineschedule.hh:15