BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
bseengineschedule.hh
Go to the documentation of this file.
00001  // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html
00002 #ifndef __BSE_ENGINE_SCHEDULE_H__
00003 #define __BSE_ENGINE_SCHEDULE_H__
00004 
00005 #include <bse/bseenginenode.hh>
00006 
00007 G_BEGIN_DECLS
00008 
00009 typedef struct
00010 {
00011   EngineNode *last;     /* resolve node */
00012   SfiRing    *nodes;    /* of type EngineNode* */
00013   guint       seen_deferred_node : 1;
00014 } EngineCycle;
00015 typedef struct
00016 {
00017   guint    leaf_level;
00018   SfiRing *cycles;      /* of type Cycle* */
00019   SfiRing *cycle_nodes; /* of type EngineNode* */
00020 } EngineQuery;
00021 struct _EngineSchedule
00022 {
00023   guint     n_items;
00024   guint     leaf_levels;
00025   SfiRing **nodes;      /* EngineNode* */
00026   SfiRing **cycles;     /* SfiRing* */
00027   guint     secured : 1;
00028   guint     in_pqueue : 1;
00029   guint     cur_leaf_level;
00030   SfiRing  *cur_node;
00031   SfiRing  *cur_cycle;
00032   SfiRing  *vnodes;     /* virtual modules */
00033 };
00034 #define BSE_ENGINE_SCHEDULE_NONPOPABLE(schedule)        ((schedule)->cur_leaf_level >= (schedule)->leaf_levels)
00035 
00036 
00037 /* --- MasterThread --- */
00038 EngineSchedule* _engine_schedule_new            (void);
00039 void            _engine_schedule_clear          (EngineSchedule *schedule);
00040 void            _engine_schedule_destroy        (EngineSchedule *schedule);
00041 void            _engine_schedule_consumer_node  (EngineSchedule *schedule,
00042                                                  EngineNode     *node);
00043 void            _engine_schedule_secure         (EngineSchedule *schedule);
00044 EngineNode*     _engine_schedule_pop_node       (EngineSchedule *schedule);
00045 SfiRing*        _engine_schedule_pop_cycle      (EngineSchedule *schedule);
00046 void            _engine_schedule_restart        (EngineSchedule *schedule);
00047 void            _engine_schedule_unsecure       (EngineSchedule *schedule);
00048 
00049 G_END_DECLS
00050 
00051 #endif /* __BSE_ENGINE_SCHEDULE_H__ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines