20 #define SPA_API_LOOP SPA_API_IMPL
22 #define SPA_API_LOOP static inline
35#define SPA_TYPE_INTERFACE_Loop SPA_TYPE_INFO_INTERFACE_BASE "Loop"
36#define SPA_TYPE_INTERFACE_DataLoop SPA_TYPE_INFO_INTERFACE_BASE "DataLoop"
37#define SPA_VERSION_LOOP 0
40#define SPA_TYPE_INTERFACE_LoopControl SPA_TYPE_INFO_INTERFACE_BASE "LoopControl"
41#define SPA_VERSION_LOOP_CONTROL 2
44#define SPA_TYPE_INTERFACE_LoopUtils SPA_TYPE_INFO_INTERFACE_BASE "LoopUtils"
45#define SPA_VERSION_LOOP_UTILS 0
76#define SPA_VERSION_LOOP_METHODS 0
133 int (*
invoke) (
void *object,
152 int (*
locked) (
void *object,
177 size_t size,
bool block,
void *user_data)
181 size, block, user_data);
185 size_t size,
void *user_data)
197#define SPA_VERSION_LOOP_CONTROL_HOOKS 0
201 void (*
before) (
void *data);
204 void (*
after) (
void *data);
247#define SPA_VERSION_LOOP_CONTROL_METHODS 2
259 int (*get_fd) (
void *object);
267 void (*add_hook) (
void *object,
280 void (*enter) (
void *object);
289 void (*leave) (
void *object);
302 int (*iterate) (
void *object,
int timeout);
312 int (*check) (
void *object);
321 int (*lock) (
void *object);
330 int (*unlock) (
void *object);
338 int (*get_time) (
void *object,
struct timespec *abstime, int64_t timeout);
350 int (*wait) (
void *object,
const struct timespec *abstime);
365 int (*signal) (
void *object,
bool wait_for_accept);
376 int (*accept) (
void *object);
427 struct timespec *abstime, int64_t timeout)
433 const struct timespec *abstime)
461#define SPA_VERSION_LOOP_UTILS_METHODS 0
477 struct spa_source *(*add_event) (
void *object,
485 struct timespec *value,
486 struct timespec *interval,
488 struct spa_source *(*add_signal) (
void *object,
543 struct spa_source *source,
struct timespec *value,
544 struct timespec *interval,
bool absolute)
548 value, interval, absolute);
uint32_t int seq
Definition core.h:432
#define spa_api_method_r(rtype, def, type, o, method, version,...)
Definition hook.h:291
#define spa_api_method_fast_r(rtype, def, type, o, method, version,...)
Definition hook.h:325
#define spa_callbacks_call_fast(callbacks, type, method, vers,...)
Definition hook.h:184
#define spa_api_method_v(type, o, method, version,...)
Definition hook.h:285
#define spa_list_for_each_reverse(pos, head, member)
Definition list.h:122
#define spa_list_for_each(pos, head, member)
Definition list.h:119
SPA_API_LOOP int spa_loop_invoke(struct spa_loop *object, spa_invoke_func_t func, uint32_t seq, const void *data, size_t size, bool block, void *user_data)
Definition loop.h:191
SPA_API_LOOP void spa_loop_control_hook_before(struct spa_hook_list *l)
Definition loop.h:224
SPA_API_LOOP struct spa_source * spa_loop_utils_add_idle(struct spa_loop_utils *object, bool enabled, spa_source_idle_func_t func, void *data)
Definition loop.h:531
SPA_API_LOOP struct spa_source * spa_loop_utils_add_signal(struct spa_loop_utils *object, int signal_number, spa_source_signal_func_t func, void *data)
Definition loop.h:570
SPA_API_LOOP int spa_loop_control_accept(struct spa_loop_control *object)
Definition loop.h:461
SPA_API_LOOP int spa_loop_add_source(struct spa_loop *object, struct spa_source *source)
Definition loop.h:176
void(* spa_source_timer_func_t)(void *data, uint64_t expirations)
Definition loop.h:470
SPA_API_LOOP struct spa_source * spa_loop_utils_add_timer(struct spa_loop_utils *object, spa_source_timer_func_t func, void *data)
Definition loop.h:556
SPA_API_LOOP int spa_loop_control_get_fd(struct spa_loop_control *object)
Definition loop.h:397
SPA_API_LOOP void spa_loop_control_enter(struct spa_loop_control *object)
Definition loop.h:409
SPA_API_LOOP int spa_loop_control_signal(struct spa_loop_control *object, bool wait_for_accept)
Definition loop.h:456
SPA_API_LOOP int spa_loop_remove_source(struct spa_loop *object, struct spa_source *source)
Definition loop.h:186
SPA_API_LOOP int spa_loop_utils_update_timer(struct spa_loop_utils *object, struct spa_source *source, struct timespec *value, struct timespec *interval, bool absolute)
Definition loop.h:561
SPA_API_LOOP int spa_loop_utils_enable_idle(struct spa_loop_utils *object, struct spa_source *source, bool enabled)
Definition loop.h:537
void(* spa_source_event_func_t)(void *data, uint64_t count)
Definition loop.h:469
void(* spa_source_signal_func_t)(void *data, int signal_number)
Definition loop.h:471
SPA_API_LOOP int spa_loop_control_iterate_fast(struct spa_loop_control *object, int timeout)
Definition loop.h:423
SPA_API_LOOP void spa_loop_control_add_hook(struct spa_loop_control *object, struct spa_hook *hook, const struct spa_loop_control_hooks *hooks, void *data)
Definition loop.h:402
SPA_API_LOOP int spa_loop_control_wait(struct spa_loop_control *object, const struct timespec *abstime)
Definition loop.h:450
void(* spa_source_idle_func_t)(void *data)
Definition loop.h:468
SPA_API_LOOP int spa_loop_control_iterate(struct spa_loop_control *object, int timeout)
Definition loop.h:417
SPA_API_LOOP int spa_loop_control_unlock(struct spa_loop_control *object)
Definition loop.h:439
SPA_API_LOOP void spa_loop_utils_destroy_source(struct spa_loop_utils *object, struct spa_source *source)
Definition loop.h:577
void(* spa_source_func_t)(struct spa_source *source)
Definition loop.h:65
SPA_API_LOOP int spa_loop_control_check(struct spa_loop_control *object)
Definition loop.h:429
SPA_API_LOOP void spa_loop_control_hook_after(struct spa_hook_list *l)
Definition loop.h:231
SPA_API_LOOP struct spa_source * spa_loop_utils_add_event(struct spa_loop_utils *object, spa_source_event_func_t func, void *data)
Definition loop.h:544
SPA_API_LOOP int spa_loop_control_get_time(struct spa_loop_control *object, struct timespec *abstime, int64_t timeout)
Definition loop.h:444
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:78
void(* spa_source_io_func_t)(void *data, int fd, uint32_t mask)
Definition loop.h:467
SPA_API_LOOP int spa_loop_control_lock(struct spa_loop_control *object)
Definition loop.h:434
SPA_API_LOOP int spa_loop_utils_signal_event(struct spa_loop_utils *object, struct spa_source *source)
Definition loop.h:549
SPA_API_LOOP int spa_loop_utils_update_io(struct spa_loop_utils *object, struct spa_source *source, uint32_t mask)
Definition loop.h:524
SPA_API_LOOP void spa_loop_control_leave(struct spa_loop_control *object)
Definition loop.h:413
SPA_API_LOOP int spa_loop_locked(struct spa_loop *object, spa_invoke_func_t func, uint32_t seq, const void *data, size_t size, void *user_data)
Definition loop.h:199
SPA_API_LOOP int spa_loop_update_source(struct spa_loop *object, struct spa_source *source)
Definition loop.h:181
SPA_API_LOOP struct spa_source * spa_loop_utils_add_io(struct spa_loop_utils *object, int fd, uint32_t mask, bool close, spa_source_io_func_t func, void *data)
Definition loop.h:518
#define SPA_API_LOOP
Definition loop.h:29
A list of hooks.
Definition hook.h:416
struct spa_list list
Definition hook.h:417
A hook, contains the structure with functions and the data passed to the functions.
Definition hook.h:427
struct spa_callbacks cb
Definition hook.h:429
struct spa_list link
Definition hook.h:428
Control hooks.
Definition loop.h:212
void(* before)(void *data)
Executed right before waiting for events.
Definition loop.h:218
uint32_t version
Definition loop.h:215
void(* after)(void *data)
Executed right after waiting for events.
Definition loop.h:221
Control an event loop.
Definition loop.h:261
struct spa_interface iface
Definition loop.h:54
Register sources and work items to an event loop.
Definition loop.h:88
int(* add_source)(void *object, struct spa_source *source)
Add a source to the loop.
Definition loop.h:101
int(* locked)(void *object, spa_invoke_func_t func, uint32_t seq, const void *data, size_t size, void *user_data)
Call a function with the loop lock acquired May be called from any thread and multiple threads at the...
Definition loop.h:168
int(* remove_source)(void *object, struct spa_source *source)
Remove a source from the loop.
Definition loop.h:119
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:149
int(* update_source)(void *object, struct spa_source *source)
Update the source io mask.
Definition loop.h:110
uint32_t version
Definition loop.h:93
Create sources for an event loop.
Definition loop.h:476
int(* update_io)(void *object, struct spa_source *source, uint32_t mask)
Definition loop.h:489
int(* enable_idle)(void *object, struct spa_source *source, bool enabled)
Definition loop.h:494
int(* signal_event)(void *object, struct spa_source *source)
Definition loop.h:498
int(* update_timer)(void *object, struct spa_source *source, struct timespec *value, struct timespec *interval, bool absolute)
Definition loop.h:502
void(* destroy_source)(void *object, struct spa_source *source)
destroy a source allocated with this interface.
Definition loop.h:514
uint32_t version
Definition loop.h:481
struct spa_interface iface
Definition loop.h:60
struct spa_interface iface
Definition loop.h:48
uint32_t rmask
Definition loop.h:73
void * data
Definition loop.h:70
void * priv
Definition loop.h:75
uint32_t mask
Definition loop.h:72
spa_source_func_t func
Definition loop.h:69
int fd
Definition loop.h:71
struct spa_loop * loop
Definition loop.h:68