]> code.delx.au - pulseaudio/blob - src/mainloop-api.h
main part of the native protocol
[pulseaudio] / src / mainloop-api.h
1 #ifndef foomainloopapihfoo
2 #define foomainloopapihfoo
3
4 #include <time.h>
5 #include <sys/time.h>
6
7 enum pa_mainloop_api_io_events {
8 PA_MAINLOOP_API_IO_EVENT_NULL = 0,
9 PA_MAINLOOP_API_IO_EVENT_INPUT = 1,
10 PA_MAINLOOP_API_IO_EVENT_OUTPUT = 2,
11 PA_MAINLOOP_API_IO_EVENT_BOTH = 3
12 };
13
14 struct pa_mainloop_api {
15 void *userdata;
16
17 /* IO sources */
18 void* (*source_io)(struct pa_mainloop_api*a, int fd, enum pa_mainloop_api_io_events events, void (*callback) (struct pa_mainloop_api*a, void *id, int fd, enum pa_mainloop_api_io_events events, void *userdata), void *userdata);
19 void (*enable_io)(struct pa_mainloop_api*a, void* id, enum pa_mainloop_api_io_events events);
20 void (*cancel_io)(struct pa_mainloop_api*a, void* id);
21
22 /* Fixed sources */
23 void* (*source_fixed)(struct pa_mainloop_api*a, void (*callback) (struct pa_mainloop_api*a, void *id, void *userdata), void *userdata);
24 void (*enable_fixed)(struct pa_mainloop_api*a, void* id, int b);
25 void (*cancel_fixed)(struct pa_mainloop_api*a, void* id);
26
27 /* Idle sources */
28 void* (*source_idle)(struct pa_mainloop_api*a, void (*callback) (struct pa_mainloop_api*a, void *id, void *userdata), void *userdata);
29 void (*enable_idle)(struct pa_mainloop_api*a, void* id, int b);
30 void (*cancel_idle)(struct pa_mainloop_api*a, void* id);
31
32 /* Time sources */
33 void* (*source_time)(struct pa_mainloop_api*a, const struct timeval *tv, void (*callback) (struct pa_mainloop_api*a, void *id, const struct timeval *tv, void *userdata), void *userdata);
34 void (*enable_time)(struct pa_mainloop_api*a, void *id, const struct timeval *tv);
35 void (*cancel_time)(struct pa_mainloop_api*a, void* id);
36
37 /* Exit mainloop */
38 void (*quit)(struct pa_mainloop_api*a, int retval);
39 };
40
41 void pa_mainloop_api_once(struct pa_mainloop_api*m, void (*callback)(void *userdata), void *userdata);
42
43 #endif