PulseAudio 16.1

Data Structures | Typedefs | Enumerations | Functions
mainloop-api.h File Reference

Main loop abstraction layer. More...

Go to the source code of this file.

## Data Structures
struct | pa_mainloop_api
| An abstract mainloop API vtable. More...

## Typedefs
typedef struct pa_mainloop_api | pa_mainloop_api
| An abstract mainloop API vtable. More...
typedef enum pa_io_event_flags | pa_io_event_flags_t
| A bitmask for IO events. More...
typedef struct pa_io_event | pa_io_event
| An opaque IO event source object. More...
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)
| An IO event callback prototype. More...
typedef void(* | pa_io_event_destroy_cb_t) (pa_mainloop_api *a, pa_io_event *e, void *userdata)
| A IO event destroy callback prototype. More...
typedef struct pa_time_event | pa_time_event
| An opaque timer event source object. More...
typedef void(* | pa_time_event_cb_t) (pa_mainloop_api *a, pa_time_event *e, const struct timeval *tv, void *userdata)
| A time event callback prototype. More...
typedef void(* | pa_time_event_destroy_cb_t) (pa_mainloop_api *a, pa_time_event *e, void *userdata)
| A time event destroy callback prototype. More...
typedef struct pa_defer_event | pa_defer_event
| An opaque deferred event source object. More...
typedef void(* | pa_defer_event_cb_t) (pa_mainloop_api *a, pa_defer_event *e, void *userdata)
| A defer event callback prototype. More...
typedef void(* | pa_defer_event_destroy_cb_t) (pa_mainloop_api *a, pa_defer_event *e, void *userdata)
| A defer event destroy callback prototype. More...

## Enumerations
enum | pa_io_event_flags { PA_IO_EVENT_NULL = 0 , PA_IO_EVENT_INPUT = 1 , PA_IO_EVENT_OUTPUT = 2 , PA_IO_EVENT_HANGUP = 4 , PA_IO_EVENT_ERROR = 8 }
| A bitmask for IO events. More...

## Functions
void | pa_mainloop_api_once (pa_mainloop_api *m, void(*callback)(pa_mainloop_api *m, void *userdata), void *userdata)
| Run the specified callback function once from the main loop using an anonymous defer event. More...

## Detailed Description

Main loop abstraction layer.

Both the PulseAudio core and the PulseAudio client library use a main loop abstraction layer. Due to this it is possible to embed PulseAudio into other applications easily. Three main loop implementations are currently available:

- A minimal implementation based on the C library's poll() function (See mainloop.h).
- A special version of the previous implementation where all of PulseAudio's internal handling runs in a separate thread (See thread-mainloop.h).
- A wrapper around the GLIB main loop. Use this to embed PulseAudio into your GLIB/GTK+/GNOME programs (See glib-mainloop.h).

The structure pa_mainloop_api is used as a vtable for the main loop abstraction.

This mainloop abstraction layer has no direct support for UNIX signals. Generic, mainloop implementation agnostic support is available through mainloop-signal.h.

## Typedef Documentation

## ◆ pa_defer_event

typedef struct pa_defer_event pa_defer_event

An opaque deferred event source object.

Events of this type are triggered once in every main loop iteration

## ◆ pa_defer_event_cb_t

typedef void(* pa_defer_event_cb_t) (pa_mainloop_api *a, pa_defer_event *e, void *userdata)

A defer event callback prototype.

Since
  0.9.3

## ◆ pa_defer_event_destroy_cb_t

typedef void(* pa_defer_event_destroy_cb_t) (pa_mainloop_api *a, pa_defer_event *e, void *userdata)

A defer event destroy callback prototype.

Since
  0.9.3

## ◆ pa_io_event

typedef struct pa_io_event pa_io_event

An opaque IO event source object.

## ◆ pa_io_event_cb_t

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)

An IO event callback prototype.

Since
  0.9.3

## ◆ pa_io_event_destroy_cb_t

typedef void(* pa_io_event_destroy_cb_t) (pa_mainloop_api *a, pa_io_event *e, void *userdata)

A IO event destroy callback prototype.

Since
  0.9.3

## ◆ pa_io_event_flags_t

typedef enum pa_io_event_flags pa_io_event_flags_t

A bitmask for IO events.

## ◆ pa_mainloop_api

typedef struct pa_mainloop_api pa_mainloop_api

An abstract mainloop API vtable.

## ◆ pa_time_event

typedef struct pa_time_event pa_time_event

An opaque timer event source object.

## ◆ pa_time_event_cb_t

typedef void(* pa_time_event_cb_t) (pa_mainloop_api *a, pa_time_event *e, const struct timeval *tv, void *userdata)

A time event callback prototype.

Since
  0.9.3

## ◆ pa_time_event_destroy_cb_t

typedef void(* pa_time_event_destroy_cb_t) (pa_mainloop_api *a, pa_time_event *e, void *userdata)

A time event destroy callback prototype.

Since
  0.9.3

## Enumeration Type Documentation

## ◆ pa_io_event_flags

enum pa_io_event_flags

A bitmask for IO events.

Enumerator
PA_IO_EVENT_NULL | No event.
PA_IO_EVENT_INPUT | Input event.
PA_IO_EVENT_OUTPUT | Output event.
PA_IO_EVENT_HANGUP | Hangup event.
PA_IO_EVENT_ERROR | Error event.

## Function Documentation

## ◆ pa_mainloop_api_once()

void pa_mainloop_api_once | ( | pa_mainloop_api * | m,
|  | void(*)(pa_mainloop_api *m, void *userdata) | callback,
|  | void * | userdata
| ) |  |

Run the specified callback function once from the main loop using an anonymous defer event.

If the mainloop runs in a different thread, you need to follow the mainloop implementation's rules regarding how to safely create defer events. In particular, if you're using pa_threaded_mainloop, you must lock the mainloop before calling this function.