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);
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);
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
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
void(*) spa_source_func_t(struct spa_source *source)
Definition loop.h:65
void(*) spa_source_io_func_t(void *data, int fd, uint32_t mask)
Definition loop.h:467
SPA_API_LOOP int spa_loop_control_signal(struct spa_loop_control *object, bool wait_for_accept)
Definition loop.h:456
void(*) spa_source_idle_func_t(void *data)
Definition loop.h:468
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_timer_func_t(void *data, uint64_t expirations)
Definition loop.h:470
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
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
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
void(*) spa_source_signal_func_t(void *data, int signal_number)
Definition loop.h:471
SPA_API_LOOP int spa_loop_control_get_time(struct spa_loop_control *object, struct timespec *abstime, int64_t timeout)
Definition loop.h:444
void(*) spa_source_event_func_t(void *data, uint64_t count)
Definition loop.h:469
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
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
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
uint32_t version
Definition loop.h:215
void(*) after(void *data)
Executed right after waiting for events.
Definition loop.h:221
void(*) before(void *data)
Executed right before waiting for events.
Definition loop.h:218
Control an event loop.
Definition loop.h:261
int(*) accept(void *object)
Accept signalers Resume the thread that signaled with wait_for accept.
Definition loop.h:394
int(*) unlock(void *object)
Unlock the loop.
Definition loop.h:348
void(*) enter(void *object)
Enter a loop.
Definition loop.h:298
int(*) iterate(void *object, int timeout)
Perform one iteration of the loop.
Definition loop.h:320
int(*) check(void *object)
Check context of the loop.
Definition loop.h:330
void(*) leave(void *object)
Leave a loop.
Definition loop.h:307
int(*) signal(void *object, bool wait_for_accept)
Signal waiters Wake up all threads blocked in wait.
Definition loop.h:383
int(*) lock(void *object)
Lock the loop.
Definition loop.h:339
int(*) get_time(void *object, struct timespec *abstime, int64_t timeout)
get the absolute time Get the current time with timeout that can be used in wait.
Definition loop.h:356
void(*) add_hook(void *object, struct spa_hook *hook, const struct spa_loop_control_hooks *hooks, void *data)
Add a hook.
Definition loop.h:285
int(*) wait(void *object, const struct timespec *abstime)
Wait for a signal Wait until a thread performs signal.
Definition loop.h:368
struct spa_interface iface
Definition loop.h:54
Register sources and work items to an event loop.
Definition loop.h:88
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(*) remove_source(void *object, struct spa_source *source)
Remove a source from the loop.
Definition loop.h:119
int(*) add_source(void *object, struct spa_source *source)
Add a source to the loop.
Definition loop.h:101
uint32_t version
Definition loop.h:93
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(*) update_source(void *object, struct spa_source *source)
Update the source io mask.
Definition loop.h:110
Create sources for an event loop.
Definition loop.h:476
int(*) enable_idle(void *object, struct spa_source *source, bool enabled)
Definition loop.h:494
struct spa_source *(*) add_io(void *object, int fd, uint32_t mask, bool close, spa_source_io_func_t func, void *data)
Definition loop.h:483
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
int(*) update_io(void *object, struct spa_source *source, uint32_t mask)
Definition loop.h:489
struct spa_source *(*) add_idle(void *object, bool enabled, spa_source_idle_func_t func, void *data)
Definition loop.h:491
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 * 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