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 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);
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,
263 struct spa_source *(*add_timer) (
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__)
struct spa_loop * loop
Definition: loop.h:76
struct spa_interface iface
Definition: loop.h:68
uint32_t version
Definition: loop.h:101
void(* before)(void *data)
Executed right before waiting for events.
Definition: loop.h:174
spa_source_func_t func
Definition: loop.h:77
uint32_t mask
Definition: loop.h:80
A hook, contains the structure with functions and the data passed to the functions.
Definition: hook.h:342
int(* signal_event)(void *object, struct spa_source *source)
Definition: loop.h:332
int(* remove_source)(void *object, struct spa_source *source)
remove a source from the loop
Definition: loop.h:112
int(* enable_idle)(void *object, struct spa_source *source, bool enabled)
Definition: loop.h:328
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
void * priv
Definition: loop.h:83
uint32_t rmask
Definition: loop.h:81
uint32_t version
Definition: loop.h:204
uint32_t version
Definition: loop.h:315
void(* spa_source_signal_func_t)(void *data, int signal_number)
Definition: loop.h:305
void(* destroy_source)(void *object, struct spa_source *source)
destroy a source allocated with this interface.
Definition: loop.h:348
int(* get_fd)(void *object)
Definition: loop.h:206
Control hooks.
Definition: loop.h:168
struct spa_interface iface
Definition: loop.h:56
void(* spa_source_io_func_t)(void *data, int fd, uint32_t mask)
Definition: loop.h:301
void(* spa_source_timer_func_t)(void *data, uint64_t expirations)
Definition: loop.h:304
int(* iterate)(void *object, int timeout)
Perform one iteration of the loop.
Definition: loop.h:244
uint32_t version
Definition: loop.h:171
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
int fd
Definition: loop.h:79
void(* add_hook)(void *object, struct spa_hook *hook, const struct spa_loop_control_hooks *hooks, void *data)
Add a hook.
Definition: loop.h:214
void(* spa_source_event_func_t)(void *data, uint64_t count)
Definition: loop.h:303
struct spa_interface iface
Definition: loop.h:62
int(* add_source)(void *object, struct spa_source *source)
add a source to the loop
Definition: loop.h:104
void(* after)(void *data)
Executed right after waiting for events.
Definition: loop.h:177
int(* update_timer)(void *object, struct spa_source *source, struct timespec *value, struct timespec *interval, bool absolute)
Definition: loop.h:336
void(* spa_source_func_t)(struct spa_source *source)
Definition: loop.h:73
void(* spa_source_idle_func_t)(void *data)
Definition: loop.h:302
void(* enter)(void *object)
Enter a loop.
Definition: loop.h:226
Control an event loop.
Definition: loop.h:199
Register sources and work items to an event loop.
Definition: loop.h:96
int(* update_io)(void *object, struct spa_source *source, uint32_t mask)
Definition: loop.h:323
void(* leave)(void *object)
Leave a loop.
Definition: loop.h:233
void * data
Definition: loop.h:78
Create sources for an event loop.
Definition: loop.h:310
int(* update_source)(void *object, struct spa_source *source)
update the source io mask
Definition: loop.h:108