00001 #ifndef foomainloopapihfoo
00002 #define foomainloopapihfoo
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <sys/time.h>
00027 #include <time.h>
00028
00029 #include <pulse/cdecl.h>
00030 #include <pulse/sample.h>
00031 #include <pulse/version.h>
00032
00048 PA_C_DECL_BEGIN
00049
00051 typedef struct pa_mainloop_api pa_mainloop_api;
00052
00054 typedef enum pa_io_event_flags {
00055 PA_IO_EVENT_NULL = 0,
00056 PA_IO_EVENT_INPUT = 1,
00057 PA_IO_EVENT_OUTPUT = 2,
00058 PA_IO_EVENT_HANGUP = 4,
00059 PA_IO_EVENT_ERROR = 8
00060 } pa_io_event_flags_t;
00061
00063 typedef struct pa_io_event pa_io_event;
00065 typedef void (*pa_io_event_cb_t)(pa_mainloop_api*ea, pa_io_event* e, int fd, pa_io_event_flags_t events, void *userdata);
00067 typedef void (*pa_io_event_destroy_cb_t)(pa_mainloop_api*a, pa_io_event *e, void *userdata);
00068
00070 typedef struct pa_time_event pa_time_event;
00072 typedef void (*pa_time_event_cb_t)(pa_mainloop_api*a, pa_time_event* e, const struct timeval *tv, void *userdata);
00074 typedef void (*pa_rtclock_event_cb_t)(pa_mainloop_api*a, pa_time_event* e, pa_usec_t time, void *userdata);
00076 typedef void (*pa_time_event_destroy_cb_t)(pa_mainloop_api*a, pa_time_event *e, void *userdata);
00077
00079 typedef struct pa_defer_event pa_defer_event;
00081 typedef void (*pa_defer_event_cb_t)(pa_mainloop_api*a, pa_defer_event* e, void *userdata);
00083 typedef void (*pa_defer_event_destroy_cb_t)(pa_mainloop_api*a, pa_defer_event *e, void *userdata);
00084
00086 struct pa_mainloop_api {
00088 void *userdata;
00089
00091 pa_io_event* (*io_new)(pa_mainloop_api*a, int fd, pa_io_event_flags_t events, pa_io_event_cb_t cb, void *userdata);
00093 void (*io_enable)(pa_io_event* e, pa_io_event_flags_t events);
00095 void (*io_free)(pa_io_event* e);
00097 void (*io_set_destroy)(pa_io_event *e, pa_io_event_destroy_cb_t cb);
00098
00100 pa_time_event* (*time_new)(pa_mainloop_api*a, const struct timeval *tv, pa_time_event_cb_t cb, void *userdata);
00102 void (*time_restart)(pa_time_event* e, const struct timeval *tv);
00104 void (*time_free)(pa_time_event* e);
00106 void (*time_set_destroy)(pa_time_event *e, pa_time_event_destroy_cb_t cb);
00107
00109 pa_defer_event* (*defer_new)(pa_mainloop_api*a, pa_defer_event_cb_t cb, void *userdata);
00111 void (*defer_enable)(pa_defer_event* e, int b);
00113 void (*defer_free)(pa_defer_event* e);
00115 void (*defer_set_destroy)(pa_defer_event *e, pa_defer_event_destroy_cb_t cb);
00116
00118 void (*quit)(pa_mainloop_api*a, int retval);
00119
00121 pa_time_event* (*rtclock_time_new)(pa_mainloop_api*a, pa_usec_t time, pa_rtclock_event_cb_t cb, void *userdata);
00123 void (*rtclock_time_restart)(pa_time_event* e, pa_usec_t time);
00124 };
00125
00127 void pa_mainloop_api_once(pa_mainloop_api*m, void (*callback)(pa_mainloop_api*m, void *userdata), void *userdata);
00128
00129 PA_C_DECL_END
00130
00131 #endif