PipeWire
0.3.33
|
The threaded loop object runs a PipeWire Loop in a separate thread and ensures proper locking is done. More...
Data Structures | |
struct | pw_thread_loop_events |
Thread loop events. More... | |
Functions | |
struct pw_thread_loop * | pw_thread_loop_new (const char *name, const struct spa_dict *props) |
Make a new thread loop with the given name and optional properties. More... | |
struct pw_thread_loop * | pw_thread_loop_new_full (struct pw_loop *loop, const char *name, const struct spa_dict *props) |
Make a new thread loop with the given loop, name and optional properties. More... | |
void | pw_thread_loop_destroy (struct pw_thread_loop *loop) |
Destroy a thread loop. More... | |
void | pw_thread_loop_add_listener (struct pw_thread_loop *loop, struct spa_hook *listener, const struct pw_thread_loop_events *events, void *data) |
Add an event listener. More... | |
struct pw_loop * | pw_thread_loop_get_loop (struct pw_thread_loop *loop) |
Get the loop implementation of the thread loop. More... | |
int | pw_thread_loop_start (struct pw_thread_loop *loop) |
Start the thread loop. More... | |
void | pw_thread_loop_stop (struct pw_thread_loop *loop) |
Stop the thread loop. More... | |
void | pw_thread_loop_lock (struct pw_thread_loop *loop) |
Lock the loop. More... | |
void | pw_thread_loop_unlock (struct pw_thread_loop *loop) |
Unlock the loop. More... | |
void | pw_thread_loop_wait (struct pw_thread_loop *loop) |
Release the lock and wait until some thread calls pw_thread_loop_signal. More... | |
int | pw_thread_loop_timed_wait (struct pw_thread_loop *loop, int wait_max_sec) |
Release the lock and wait a maximum of 'wait_max_sec' seconds until some thread calls pw_thread_loop_signal or time out. More... | |
int | pw_thread_loop_get_time (struct pw_thread_loop *loop, struct timespec *abstime, int64_t timeout) |
Get a struct timespec suitable for pw_thread_loop_timed_wait_full. More... | |
int | pw_thread_loop_timed_wait_full (struct pw_thread_loop *loop, struct timespec *abstime) |
Release the lock and wait up to abstime until some thread calls pw_thread_loop_signal. More... | |
void | pw_thread_loop_signal (struct pw_thread_loop *loop, bool wait_for_accept) |
Signal all threads waiting with pw_thread_loop_wait. More... | |
void | pw_thread_loop_accept (struct pw_thread_loop *loop) |
Signal all threads executing pw_thread_loop_signal with wait_for_accept. More... | |
bool | pw_thread_loop_in_thread (struct pw_thread_loop *loop) |
Check if inside the thread. More... | |
The threaded loop object runs a PipeWire Loop in a separate thread and ensures proper locking is done.
All of the loop callbacks will be executed with the loop lock held.
See also Threaded Loop
void pw_thread_loop_accept | ( | struct pw_thread_loop * | loop | ) |
Signal all threads executing pw_thread_loop_signal with wait_for_accept.
Signal all threads executing pw_thread_loop_signal with wait_for_accept.
loop | a PipeWire Threaded Loop Object to signal |
void pw_thread_loop_add_listener | ( | struct pw_thread_loop * | loop, |
struct spa_hook * | listener, | ||
const struct pw_thread_loop_events * | events, | ||
void * | data | ||
) |
Add an event listener.
References spa_hook_list_append().
void pw_thread_loop_destroy | ( | struct pw_thread_loop * | loop | ) |
Destroy a thread loop.
Destroy a thread loop.
References pw_loop_destroy(), pw_loop_destroy_source, pw_thread_loop_events_destroy, pw_thread_loop_stop(), spa_hook_list_clean(), and spa_hook_remove().
struct pw_loop* pw_thread_loop_get_loop | ( | struct pw_thread_loop * | loop | ) |
Get the loop implementation of the thread loop.
References pw_loop::loop.
int pw_thread_loop_get_time | ( | struct pw_thread_loop * | loop, |
struct timespec * | abstime, | ||
int64_t | timeout | ||
) |
Get a struct timespec suitable for pw_thread_loop_timed_wait_full.
Since: 0.3.7
Get a struct timespec suitable for pw_thread_loop_timed_wait_full.
This can be used in pw_thread_loop_timed_wait_full().
loop | a PipeWire Threaded Loop Object |
abstime | the result struct timesspec |
timeout | the time in nanoseconds to add to tp |
References SPA_NSEC_PER_SEC.
Referenced by pw_thread_loop_timed_wait().
bool pw_thread_loop_in_thread | ( | struct pw_thread_loop * | loop | ) |
Check if inside the thread.
Check if inside the thread.
loop | a PipeWire Threaded Loop Object to signal |
void pw_thread_loop_lock | ( | struct pw_thread_loop * | loop | ) |
Lock the loop.
This ensures exclusive ownership of the loop
Lock the loop.
loop | a PipeWire Threaded Loop Object |
References NAME, and pw_log_trace.
struct pw_thread_loop* pw_thread_loop_new | ( | const char * | name, |
const struct spa_dict * | props | ||
) |
Make a new thread loop with the given name and optional properties.
Make a new thread loop with the given name and optional properties.
name | the name of the thread or NULL |
props | a dict of properties for the thread loop |
Make a new PipeWire Threaded Loop Object that will run in a thread with name.
After this function you should probably call pw_thread_loop_start() to actually start the thread
struct pw_thread_loop* pw_thread_loop_new_full | ( | struct pw_loop * | loop, |
const char * | name, | ||
const struct spa_dict * | props | ||
) |
Make a new thread loop with the given loop, name and optional properties.
When loop is NULL, a new loop will be created.
Make a new thread loop with the given loop, name and optional properties.
loop | the loop to wrap |
name | the name of the thread or NULL |
props | a dict of properties for the thread loop |
Make a new PipeWire Threaded Loop Object that will run loop in a thread with name.
After this function you should probably call pw_thread_loop_start() to actually start the thread
void pw_thread_loop_signal | ( | struct pw_thread_loop * | loop, |
bool | wait_for_accept | ||
) |
Signal all threads waiting with pw_thread_loop_wait.
Signal all threads waiting with pw_thread_loop_wait.
loop | a PipeWire Threaded Loop Object to signal |
wait_for_accept | if we need to wait for accept |
Signal the thread of loop. If wait_for_accept is true, this function waits until pw_thread_loop_accept() is called.
References NAME, and pw_log_trace.
int pw_thread_loop_start | ( | struct pw_thread_loop * | loop | ) |
Start the thread loop.
Start the thread loop.
loop | a PipeWire Threaded Loop Object |
void pw_thread_loop_stop | ( | struct pw_thread_loop * | loop | ) |
Stop the thread loop.
Stop the thread loop.
loop | a PipeWire Threaded Loop Object |
References NAME, pw_log_debug, and pw_loop_signal_event.
Referenced by pw_thread_loop_destroy().
int pw_thread_loop_timed_wait | ( | struct pw_thread_loop * | loop, |
int | wait_max_sec | ||
) |
Release the lock and wait a maximum of 'wait_max_sec' seconds until some thread calls pw_thread_loop_signal or time out.
Release the lock and wait a maximum of 'wait_max_sec' seconds until some thread calls pw_thread_loop_signal or time out.
loop | a PipeWire Threaded Loop Object to signal |
wait_max_sec | the maximum number of seconds to wait for a pw_thread_loop_signal() |
References pw_thread_loop_get_time(), pw_thread_loop_timed_wait_full(), and SPA_NSEC_PER_SEC.
int pw_thread_loop_timed_wait_full | ( | struct pw_thread_loop * | loop, |
struct timespec * | abstime | ||
) |
Release the lock and wait up to abstime until some thread calls pw_thread_loop_signal.
Use pw_thread_loop_get_time to make a timeout. Since: 0.3.7
Release the lock and wait up to abstime until some thread calls pw_thread_loop_signal.
loop | a PipeWire Threaded Loop Object to signal |
abstime | the absolute time to wait for a pw_thread_loop_signal() |
Referenced by pw_thread_loop_timed_wait().
void pw_thread_loop_unlock | ( | struct pw_thread_loop * | loop | ) |
Unlock the loop.
Unlock the loop.
loop | a PipeWire Threaded Loop Object |
References NAME, and pw_log_trace.
void pw_thread_loop_wait | ( | struct pw_thread_loop * | loop | ) |
Release the lock and wait until some thread calls pw_thread_loop_signal.
Release the lock and wait until some thread calls pw_thread_loop_signal.
loop | a PipeWire Threaded Loop Object to signal |
References NAME, and pw_log_trace.