45 #define SPA_TYPE_INTERFACE_Loop         SPA_TYPE_INFO_INTERFACE_BASE "Loop" 
   46 #define SPA_TYPE_INTERFACE_DataLoop     SPA_TYPE_INFO_INTERFACE_BASE "DataLoop" 
   47 #define SPA_VERSION_LOOP                0 
   50 #define SPA_TYPE_INTERFACE_LoopControl  SPA_TYPE_INFO_INTERFACE_BASE "LoopControl" 
   51 #define SPA_VERSION_LOOP_CONTROL        0 
   54 #define SPA_TYPE_INTERFACE_LoopUtils    SPA_TYPE_INFO_INTERFACE_BASE "LoopUtils" 
   55 #define SPA_VERSION_LOOP_UTILS          0 
   86 #define SPA_VERSION_LOOP_METHODS        0 
  102         int (*
invoke) (
void *object,
 
  111 #define spa_loop_method(o,method,version,...)                           \ 
  113         int _res = -ENOTSUP;                                            \ 
  114         struct spa_loop *_o = o;                                        \ 
  115         spa_interface_call_res(&_o->iface,                              \ 
  116                         struct spa_loop_methods, _res,                  \ 
  117                         method, version, ##__VA_ARGS__);                \ 
  121 #define spa_loop_add_source(l,...)      spa_loop_method(l,add_source,0,##__VA_ARGS__) 
  122 #define spa_loop_update_source(l,...)   spa_loop_method(l,update_source,0,##__VA_ARGS__) 
  123 #define spa_loop_remove_source(l,...)   spa_loop_method(l,remove_source,0,##__VA_ARGS__) 
  124 #define spa_loop_invoke(l,...)          spa_loop_method(l,invoke,0,##__VA_ARGS__) 
  131 #define SPA_VERSION_LOOP_CONTROL_HOOKS  0 
  135         void (*
before) (
void *data);
 
  138         void (*
after) (
void *data);
 
  141 #define spa_loop_control_hook_before(l)                                                 \ 
  143         struct spa_hook_list *_l = l;                                                   \ 
  144         struct spa_hook *_h;                                                            \ 
  145         spa_list_for_each_reverse(_h, &_l->list, link)                                  \ 
  146                 spa_callbacks_call(&_h->cb, struct spa_loop_control_hooks, before, 0);  \ 
  149 #define spa_loop_control_hook_after(l)                                                  \ 
  151         struct spa_hook_list *_l = l;                                                   \ 
  152         struct spa_hook *_h;                                                            \ 
  153         spa_list_for_each(_h, &_l->list, link)                                          \ 
  154                 spa_callbacks_call(&_h->cb, struct spa_loop_control_hooks, after, 0);   \ 
  163 #define SPA_VERSION_LOOP_CONTROL_METHODS        0 
  166         int (*
get_fd) (
void *object);
 
  186         void (*
enter) (
void *object);
 
  193         void (*
leave) (
void *object);
 
  204         int (*
iterate) (
void *object, 
int timeout);
 
  207 #define spa_loop_control_method_v(o,method,version,...)                 \ 
  209         struct spa_loop_control *_o = o;                                \ 
  210         spa_interface_call(&_o->iface,                                  \ 
  211                         struct spa_loop_control_methods,                \ 
  212                         method, version, ##__VA_ARGS__);                \ 
  215 #define spa_loop_control_method_r(o,method,version,...)                 \ 
  217         int _res = -ENOTSUP;                                            \ 
  218         struct spa_loop_control *_o = o;                                \ 
  219         spa_interface_call_res(&_o->iface,                              \ 
  220                         struct spa_loop_control_methods, _res,          \ 
  221                         method, version, ##__VA_ARGS__);                \ 
  225 #define spa_loop_control_get_fd(l)              spa_loop_control_method_r(l,get_fd,0) 
  226 #define spa_loop_control_add_hook(l,...)        spa_loop_control_method_v(l,add_hook,0,__VA_ARGS__) 
  227 #define spa_loop_control_enter(l)               spa_loop_control_method_v(l,enter,0) 
  228 #define spa_loop_control_leave(l)               spa_loop_control_method_v(l,leave,0) 
  229 #define spa_loop_control_iterate(l,...)         spa_loop_control_method_r(l,iterate,0,__VA_ARGS__) 
  243 #define SPA_VERSION_LOOP_UTILS_METHODS  0 
  259         struct spa_source *(*add_event) (
void *object,
 
  267                              struct timespec *value,
 
  268                              struct timespec *interval,
 
  270         struct spa_source *(*add_signal) (
void *object,
 
  280 #define spa_loop_utils_method_v(o,method,version,...)                   \ 
  282         struct spa_loop_utils *_o = o;                                  \ 
  283         spa_interface_call(&_o->iface,                                  \ 
  284                         struct spa_loop_utils_methods,                  \ 
  285                         method, version, ##__VA_ARGS__);                \ 
  288 #define spa_loop_utils_method_r(o,method,version,...)                   \ 
  290         int _res = -ENOTSUP;                                            \ 
  291         struct spa_loop_utils *_o = o;                                  \ 
  292         spa_interface_call_res(&_o->iface,                              \ 
  293                         struct spa_loop_utils_methods, _res,            \ 
  294                         method, version, ##__VA_ARGS__);                \ 
  297 #define spa_loop_utils_method_s(o,method,version,...)                   \ 
  299         struct spa_source *_res = NULL;                                 \ 
  300         struct spa_loop_utils *_o = o;                                  \ 
  301         spa_interface_call_res(&_o->iface,                              \ 
  302                         struct spa_loop_utils_methods, _res,            \ 
  303                         method, version, ##__VA_ARGS__);                \ 
  308 #define spa_loop_utils_add_io(l,...)            spa_loop_utils_method_s(l,add_io,0,__VA_ARGS__) 
  309 #define spa_loop_utils_update_io(l,...)         spa_loop_utils_method_r(l,update_io,0,__VA_ARGS__) 
  310 #define spa_loop_utils_add_idle(l,...)          spa_loop_utils_method_s(l,add_idle,0,__VA_ARGS__) 
  311 #define spa_loop_utils_enable_idle(l,...)       spa_loop_utils_method_r(l,enable_idle,0,__VA_ARGS__) 
  312 #define spa_loop_utils_add_event(l,...)         spa_loop_utils_method_s(l,add_event,0,__VA_ARGS__) 
  313 #define spa_loop_utils_signal_event(l,...)      spa_loop_utils_method_r(l,signal_event,0,__VA_ARGS__) 
  314 #define spa_loop_utils_add_timer(l,...)         spa_loop_utils_method_s(l,add_timer,0,__VA_ARGS__) 
  315 #define spa_loop_utils_update_timer(l,...)      spa_loop_utils_method_r(l,update_timer,0,__VA_ARGS__) 
  316 #define spa_loop_utils_add_signal(l,...)        spa_loop_utils_method_s(l,add_signal,0,__VA_ARGS__) 
  317 #define spa_loop_utils_destroy_source(l,...)    spa_loop_utils_method_v(l,destroy_source,0,__VA_ARGS__) 
void(* spa_source_timer_func_t)(void *data, uint64_t expirations)
Definition: loop.h:268
 
void(* spa_source_event_func_t)(void *data, uint64_t count)
Definition: loop.h:267
 
void(* spa_source_signal_func_t)(void *data, int signal_number)
Definition: loop.h:269
 
void(* spa_source_idle_func_t)(void *data)
Definition: loop.h:266
 
void(* spa_source_func_t)(struct spa_source *source)
Definition: loop.h:73
 
int(* spa_invoke_func_t)(struct spa_loop *loop, bool async, uint32_t seq, const void *data, size_t size, void *user_data)
Definition: loop.h:86
 
void(* spa_source_io_func_t)(void *data, int fd, uint32_t mask)
Definition: loop.h:265
 
A hook, contains the structure with functions and the data passed to the functions.
Definition: hook.h:351
 
Control hooks.
Definition: loop.h:152
 
void(* before)(void *data)
Executed right before waiting for events.
Definition: loop.h:158
 
uint32_t version
Definition: loop.h:155
 
void(* after)(void *data)
Executed right after waiting for events.
Definition: loop.h:161
 
Control an event loop.
Definition: loop.h:183
 
int(* get_fd)(void *object)
Definition: loop.h:190
 
int(* iterate)(void *object, int timeout)
Perform one iteration of the loop.
Definition: loop.h:228
 
void(* enter)(void *object)
Enter a loop.
Definition: loop.h:210
 
void(* add_hook)(void *object, struct spa_hook *hook, const struct spa_loop_control_hooks *hooks, void *data)
Add a hook.
Definition: loop.h:198
 
void(* leave)(void *object)
Leave a loop.
Definition: loop.h:217
 
uint32_t version
Definition: loop.h:188
 
struct spa_interface iface
Definition: loop.h:62
 
Register sources and work items to an event loop.
Definition: loop.h:96
 
int(* add_source)(void *object, struct spa_source *source)
add a source to the loop
Definition: loop.h:104
 
int(* remove_source)(void *object, struct spa_source *source)
remove a source from the loop
Definition: loop.h:112
 
int(* invoke)(void *object, spa_invoke_func_t func, uint32_t seq, const void *data, size_t size, bool block, void *user_data)
invoke a function in the context of this loop
Definition: loop.h:116
 
int(* update_source)(void *object, struct spa_source *source)
update the source io mask
Definition: loop.h:108
 
uint32_t version
Definition: loop.h:101
 
Create sources for an event loop.
Definition: loop.h:274
 
int(* update_io)(void *object, struct spa_source *source, uint32_t mask)
Definition: loop.h:287
 
int(* enable_idle)(void *object, struct spa_source *source, bool enabled)
Definition: loop.h:292
 
int(* signal_event)(void *object, struct spa_source *source)
Definition: loop.h:296
 
int(* update_timer)(void *object, struct spa_source *source, struct timespec *value, struct timespec *interval, bool absolute)
Definition: loop.h:300
 
void(* destroy_source)(void *object, struct spa_source *source)
destroy a source allocated with this interface.
Definition: loop.h:312
 
uint32_t version
Definition: loop.h:279
 
struct spa_interface iface
Definition: loop.h:68
 
struct spa_interface iface
Definition: loop.h:56
 
uint32_t rmask
Definition: loop.h:81
 
void * data
Definition: loop.h:78
 
void * priv
Definition: loop.h:83
 
uint32_t mask
Definition: loop.h:80
 
spa_source_func_t func
Definition: loop.h:77
 
int fd
Definition: loop.h:79
 
struct spa_loop * loop
Definition: loop.h:76