PipeWire 1.4.1
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
loop.h
Go to the documentation of this file.
1/* PipeWire */
2/* SPDX-FileCopyrightText: Copyright © 2018 Wim Taymans */
3/* SPDX-License-Identifier: MIT */
4
5#ifndef PIPEWIRE_LOOP_H
6#define PIPEWIRE_LOOP_H
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
12#include <spa/support/loop.h>
13#include <spa/utils/dict.h>
14
29struct pw_loop {
30 struct spa_system *system;
31 struct spa_loop *loop;
33 struct spa_loop_utils *utils;
34 const char *name;
35};
37#ifndef PW_API_LOOP_IMPL
38#define PW_API_LOOP_IMPL static inline
39#endif
40
41struct pw_loop *
42pw_loop_new(const struct spa_dict *props);
44void
46
47int pw_loop_set_name(struct pw_loop *loop, const char *name);
48
49PW_API_LOOP_IMPL int pw_loop_add_source(struct pw_loop *object, struct spa_source *source)
50{
51 return spa_loop_add_source(object->loop, source);
52}
53PW_API_LOOP_IMPL int pw_loop_update_source(struct pw_loop *object, struct spa_source *source)
55 return spa_loop_update_source(object->loop, source);
56}
57PW_API_LOOP_IMPL int pw_loop_remove_source(struct pw_loop *object, struct spa_source *source)
59 return spa_loop_remove_source(object->loop, source);
60}
61PW_API_LOOP_IMPL int pw_loop_invoke(struct pw_loop *object,
62 spa_invoke_func_t func, uint32_t seq, const void *data,
63 size_t size, bool block, void *user_data)
64{
65 return spa_loop_invoke(object->loop, func, seq, data, size, block, user_data);
67
68PW_API_LOOP_IMPL int pw_loop_get_fd(struct pw_loop *object)
69{
70 return spa_loop_control_get_fd(object->control);
71}
72PW_API_LOOP_IMPL void pw_loop_add_hook(struct pw_loop *object,
73 struct spa_hook *hook, const struct spa_loop_control_hooks *hooks,
74 void *data)
75{
76 spa_loop_control_add_hook(object->control, hook, hooks, data);
78PW_API_LOOP_IMPL void pw_loop_enter(struct pw_loop *object)
79{
80 spa_loop_control_enter(object->control);
81}
82PW_API_LOOP_IMPL void pw_loop_leave(struct pw_loop *object)
84 spa_loop_control_leave(object->control);
85}
87 int timeout)
88{
89 return spa_loop_control_iterate_fast(object->control, timeout);
90}
93pw_loop_add_io(struct pw_loop *object, int fd, uint32_t mask,
94 bool close, spa_source_io_func_t func, void *data)
95{
96 return spa_loop_utils_add_io(object->utils, fd, mask, close, func, data);
97}
99 struct spa_source *source, uint32_t mask)
100{
101 return spa_loop_utils_update_io(object->utils, source, mask);
102}
104pw_loop_add_idle(struct pw_loop *object, bool enabled,
105 spa_source_idle_func_t func, void *data)
106{
107 return spa_loop_utils_add_idle(object->utils, enabled, func, data);
108}
110 struct spa_source *source, bool enabled)
111{
112 return spa_loop_utils_enable_idle(object->utils, source, enabled);
113}
115pw_loop_add_event(struct pw_loop *object, spa_source_event_func_t func, void *data)
116{
117 return spa_loop_utils_add_event(object->utils, func, data);
118}
120 struct spa_source *source)
121{
122 return spa_loop_utils_signal_event(object->utils, source);
123}
125pw_loop_add_timer(struct pw_loop *object, spa_source_timer_func_t func, void *data)
126{
127 return spa_loop_utils_add_timer(object->utils, func, data);
128}
130 struct spa_source *source, struct timespec *value,
131 struct timespec *interval, bool absolute)
132{
133 return spa_loop_utils_update_timer(object->utils, source, value, interval, absolute);
136pw_loop_add_signal(struct pw_loop *object, int signal_number,
137 spa_source_signal_func_t func, void *data)
138{
139 return spa_loop_utils_add_signal(object->utils, signal_number, func, data);
140}
142 struct spa_source *source)
143{
144 spa_loop_utils_destroy_source(object->utils, source);
145}
151#ifdef __cplusplus
152}
153#endif
154
155#endif /* PIPEWIRE_LOOP_H */
uint32_t int seq
Definition core.h:432
PW_API_LOOP_IMPL int pw_loop_signal_event(struct pw_loop *object, struct spa_source *source)
Definition loop.h:124
PW_API_LOOP_IMPL void pw_loop_enter(struct pw_loop *object)
Definition loop.h:83
PW_API_LOOP_IMPL int pw_loop_invoke(struct pw_loop *object, spa_invoke_func_t func, uint32_t seq, const void *data, size_t size, bool block, void *user_data)
Definition loop.h:66
PW_API_LOOP_IMPL void pw_loop_destroy_source(struct pw_loop *object, struct spa_source *source)
Definition loop.h:146
PW_API_LOOP_IMPL struct spa_source * pw_loop_add_io(struct pw_loop *object, int fd, uint32_t mask, bool close, spa_source_io_func_t func, void *data)
Definition loop.h:98
PW_API_LOOP_IMPL int pw_loop_enable_idle(struct pw_loop *object, struct spa_source *source, bool enabled)
Definition loop.h:114
PW_API_LOOP_IMPL int pw_loop_add_source(struct pw_loop *object, struct spa_source *source)
Definition loop.h:54
PW_API_LOOP_IMPL int pw_loop_update_timer(struct pw_loop *object, struct spa_source *source, struct timespec *value, struct timespec *interval, bool absolute)
Definition loop.h:134
PW_API_LOOP_IMPL struct spa_source * pw_loop_add_signal(struct pw_loop *object, int signal_number, spa_source_signal_func_t func, void *data)
Definition loop.h:141
PW_API_LOOP_IMPL struct spa_source * pw_loop_add_idle(struct pw_loop *object, bool enabled, spa_source_idle_func_t func, void *data)
Definition loop.h:109
PW_API_LOOP_IMPL int pw_loop_remove_source(struct pw_loop *object, struct spa_source *source)
Definition loop.h:62
PW_API_LOOP_IMPL struct spa_source * pw_loop_add_timer(struct pw_loop *object, spa_source_timer_func_t func, void *data)
Definition loop.h:130
int pw_loop_set_name(struct pw_loop *loop, const char *name)
Definition loop.c:176
#define PW_API_LOOP_IMPL
Definition loop.h:43
PW_API_LOOP_IMPL void pw_loop_leave(struct pw_loop *object)
Definition loop.h:87
PW_API_LOOP_IMPL void pw_loop_add_hook(struct pw_loop *object, struct spa_hook *hook, const struct spa_loop_control_hooks *hooks, void *data)
Definition loop.h:77
struct pw_loop * pw_loop_new(const struct spa_dict *props)
Create a new loop.
Definition loop.c:41
PW_API_LOOP_IMPL int pw_loop_get_fd(struct pw_loop *object)
Definition loop.h:73
PW_API_LOOP_IMPL int pw_loop_iterate(struct pw_loop *object, int timeout)
Definition loop.h:91
void pw_loop_destroy(struct pw_loop *loop)
Destroy a loop.
Definition loop.c:157
PW_API_LOOP_IMPL int pw_loop_update_source(struct pw_loop *object, struct spa_source *source)
Definition loop.h:58
PW_API_LOOP_IMPL struct spa_source * pw_loop_add_event(struct pw_loop *object, spa_source_event_func_t func, void *data)
Definition loop.h:120
PW_API_LOOP_IMPL int pw_loop_update_io(struct pw_loop *object, struct spa_source *source, uint32_t mask)
Definition loop.h:103
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:169
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:400
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:439
SPA_API_LOOP int spa_loop_add_source(struct spa_loop *object, struct spa_source *source)
Definition loop.h:154
void(* spa_source_timer_func_t)(void *data, uint64_t expirations)
Definition loop.h:339
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:425
SPA_API_LOOP int spa_loop_control_get_fd(struct spa_loop_control *object)
Definition loop.h:298
SPA_API_LOOP void spa_loop_control_enter(struct spa_loop_control *object)
Definition loop.h:310
SPA_API_LOOP int spa_loop_remove_source(struct spa_loop *object, struct spa_source *source)
Definition loop.h:164
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:430
SPA_API_LOOP int spa_loop_utils_enable_idle(struct spa_loop_utils *object, struct spa_source *source, bool enabled)
Definition loop.h:406
void(* spa_source_event_func_t)(void *data, uint64_t count)
Definition loop.h:338
void(* spa_source_signal_func_t)(void *data, int signal_number)
Definition loop.h:340
SPA_API_LOOP int spa_loop_control_iterate_fast(struct spa_loop_control *object, int timeout)
Definition loop.h:324
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:303
void(* spa_source_idle_func_t)(void *data)
Definition loop.h:337
SPA_API_LOOP void spa_loop_utils_destroy_source(struct spa_loop_utils *object, struct spa_source *source)
Definition loop.h:446
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: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
void(* spa_source_io_func_t)(void *data, int fd, uint32_t mask)
Definition loop.h:336
SPA_API_LOOP int spa_loop_utils_signal_event(struct spa_loop_utils *object, struct spa_source *source)
Definition loop.h:418
SPA_API_LOOP int spa_loop_utils_update_io(struct spa_loop_utils *object, struct spa_source *source, uint32_t mask)
Definition loop.h:393
SPA_API_LOOP void spa_loop_control_leave(struct spa_loop_control *object)
Definition loop.h:314
SPA_API_LOOP int spa_loop_update_source(struct spa_loop *object, struct spa_source *source)
Definition loop.h:159
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:387
spa/support/loop.h
Definition loop.h:33
struct spa_loop * loop
wrapped loop
Definition loop.h:35
struct spa_loop_control * control
loop control
Definition loop.h:36
struct spa_system * system
system utils
Definition loop.h:34
Definition dict.h:51
A hook, contains the structure with functions and the data passed to the functions.
Definition hook.h:427
Control hooks.
Definition loop.h:181
Definition loop.h:54
Definition loop.h:60
Definition loop.h:48
Definition loop.h:67
uint32_t mask
Definition loop.h:72
spa_source_func_t func
Definition loop.h:69
int fd
Definition loop.h:71
Definition system.h:56
spa/utils/dict.h