PipeWire 1.1.0
|
Register sources and work items to an event loop. More...
#include <spa/support/loop.h>
Data Fields | |
uint32_t | version |
int(* | add_source )(void *object, struct spa_source *source) |
Add a source to the loop. | |
int(* | update_source )(void *object, struct spa_source *source) |
Update the source io mask. | |
int(* | remove_source )(void *object, struct spa_source *source) |
Remove a source from the loop. | |
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. | |
Register sources and work items to an event loop.
uint32_t spa_loop_methods::version |
int(* spa_loop_methods::add_source) (void *object, struct spa_source *source) |
Add a source to the loop.
Must be called from the loop's own thread.
[in] | object | The callbacks data. |
[in] | source | The source. |
int(* spa_loop_methods::update_source) (void *object, struct spa_source *source) |
Update the source io mask.
Must be called from the loop's own thread.
[in] | object | The callbacks data. |
[in] | source | The source. |
int(* spa_loop_methods::remove_source) (void *object, struct spa_source *source) |
Remove a source from the loop.
Must be called from the loop's own thread.
[in] | object | The callbacks data. |
[in] | source | The source. |
int(* spa_loop_methods::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.
May be called from the loop's thread, but otherwise can only be called by a single thread at a time. If called from the loop's thread, all callbacks previously queued with invoke() will be run synchronously, which might cause unexpected reentrancy problems.
[in] | object | The callbacks data. |
func | The function to be invoked. | |
seq | An opaque sequence number. This will be made available to func. | |
[in] | data | Data that will be copied into the internal ring buffer and made available to func. Because this data is copied, it is okay to pass a pointer to a local variable, but do not pass a pointer to an object that has identity. |
size | The size of data to copy. | |
block | If \true, do not return until func has been called. Otherwise, returns immediately. Passing \true does not risk a deadlock because the data thread is never allowed to wait on any other thread. | |
user_data | An opaque pointer passed to func. |
-EPIPE
if the internal ring buffer filled up, if block is \false, 0 if seq was SPA_ID_INVALID or seq with the ASYNC flag set or the return value of func otherwise.