XMMS2
|
Ringbuffer primitive. More...
Typedefs | |
typedef struct xmms_ringbuf_hotspot_St | xmms_ringbuf_hotspot_t |
Functions | |
guint | xmms_ringbuf_size (xmms_ringbuf_t *ringbuf) |
The usable size of the ringbuffer. More... | |
xmms_ringbuf_t * | xmms_ringbuf_new (guint size) |
Allocate a new ringbuffer. More... | |
void | xmms_ringbuf_destroy (xmms_ringbuf_t *ringbuf) |
Free all memory used by the ringbuffer. More... | |
void | xmms_ringbuf_clear (xmms_ringbuf_t *ringbuf) |
Clear the ringbuffers data. More... | |
guint | xmms_ringbuf_bytes_free (const xmms_ringbuf_t *ringbuf) |
Number of bytes free in the ringbuffer. More... | |
guint | xmms_ringbuf_bytes_used (const xmms_ringbuf_t *ringbuf) |
Number of bytes used in the buffer. More... | |
guint | xmms_ringbuf_read (xmms_ringbuf_t *ringbuf, gpointer data, guint len) |
Reads data from the ringbuffer. More... | |
guint | xmms_ringbuf_peek (xmms_ringbuf_t *ringbuf, gpointer data, guint len) |
Same as xmms_ringbuf_read but does not advance in the buffer after the data has been read. More... | |
guint | xmms_ringbuf_read_wait (xmms_ringbuf_t *ringbuf, gpointer data, guint len, GMutex *mtx) |
Same as xmms_ringbuf_read but blocks until you have all the data you want. More... | |
guint | xmms_ringbuf_peek_wait (xmms_ringbuf_t *ringbuf, gpointer data, guint len, GMutex *mtx) |
Same as xmms_ringbuf_peek but blocks until you have all the data you want. More... | |
guint | xmms_ringbuf_write (xmms_ringbuf_t *ringbuf, gconstpointer data, guint len) |
Write data to the ringbuffer. More... | |
guint | xmms_ringbuf_write_wait (xmms_ringbuf_t *ringbuf, gconstpointer data, guint len, GMutex *mtx) |
Same as xmms_ringbuf_write but blocks until there is enough free space. More... | |
void | xmms_ringbuf_wait_free (xmms_ringbuf_t *ringbuf, guint len, GMutex *mtx) |
Block until we have free space in the ringbuffer. More... | |
void | xmms_ringbuf_wait_used (xmms_ringbuf_t *ringbuf, guint len, GMutex *mtx) |
Block until we have used space in the buffer. More... | |
gboolean | xmms_ringbuf_iseos (const xmms_ringbuf_t *ringbuf) |
Tell if the ringbuffer is EOS. More... | |
void | xmms_ringbuf_set_eos (xmms_ringbuf_t *ringbuf, gboolean eos) |
Set EOS flag on ringbuffer. More... | |
void | xmms_ringbuf_wait_eos (xmms_ringbuf_t *ringbuf, GMutex *mtx) |
Block until we are EOSed. More... | |
Ringbuffer primitive.
typedef struct xmms_ringbuf_hotspot_St xmms_ringbuf_hotspot_t |
guint xmms_ringbuf_bytes_free | ( | const xmms_ringbuf_t * | ringbuf | ) |
Number of bytes free in the ringbuffer.
Referenced by xmms_ringbuf_wait_free(), and xmms_ringbuf_write().
guint xmms_ringbuf_bytes_used | ( | const xmms_ringbuf_t * | ringbuf | ) |
Number of bytes used in the buffer.
Referenced by xmms_output_bytes_available(), xmms_output_latency(), xmms_ringbuf_bytes_free(), xmms_ringbuf_iseos(), and xmms_ringbuf_wait_used().
void xmms_ringbuf_clear | ( | xmms_ringbuf_t * | ringbuf | ) |
Clear the ringbuffers data.
void xmms_ringbuf_destroy | ( | xmms_ringbuf_t * | ringbuf | ) |
Free all memory used by the ringbuffer.
gboolean xmms_ringbuf_iseos | ( | const xmms_ringbuf_t * | ringbuf | ) |
Tell if the ringbuffer is EOS.
Referenced by xmms_output_read(), and xmms_ringbuf_wait_eos().
xmms_ringbuf_t* xmms_ringbuf_new | ( | guint | size | ) |
Allocate a new ringbuffer.
size | The total size of the new ringbuffer |
Referenced by xmms_output_new().
guint xmms_ringbuf_peek | ( | xmms_ringbuf_t * | ringbuf, |
gpointer | data, | ||
guint | len | ||
) |
Same as xmms_ringbuf_read but does not advance in the buffer after the data has been read.
Referenced by xmms_ringbuf_peek_wait().
guint xmms_ringbuf_peek_wait | ( | xmms_ringbuf_t * | ringbuf, |
gpointer | data, | ||
guint | len, | ||
GMutex * | mtx | ||
) |
Same as xmms_ringbuf_peek but blocks until you have all the data you want.
guint xmms_ringbuf_read | ( | xmms_ringbuf_t * | ringbuf, |
gpointer | data, | ||
guint | len | ||
) |
Reads data from the ringbuffer.
This is a non-blocking call and can return less data than you wanted. Use xmms_ringbuf_wait_used to ensure that you get as much data as you want.
ringbuf | Buffer to read from |
data | Allocated buffer where the readed data will end up |
len | number of bytes to read |
Referenced by xmms_output_read(), and xmms_ringbuf_read_wait().
guint xmms_ringbuf_read_wait | ( | xmms_ringbuf_t * | ringbuf, |
gpointer | data, | ||
guint | len, | ||
GMutex * | mtx | ||
) |
Same as xmms_ringbuf_read but blocks until you have all the data you want.
void xmms_ringbuf_set_eos | ( | xmms_ringbuf_t * | ringbuf, |
gboolean | eos | ||
) |
Set EOS flag on ringbuffer.
guint xmms_ringbuf_size | ( | xmms_ringbuf_t * | ringbuf | ) |
The usable size of the ringbuffer.
void xmms_ringbuf_wait_eos | ( | xmms_ringbuf_t * | ringbuf, |
GMutex * | mtx | ||
) |
Block until we are EOSed.
void xmms_ringbuf_wait_free | ( | xmms_ringbuf_t * | ringbuf, |
guint | len, | ||
GMutex * | mtx | ||
) |
Block until we have free space in the ringbuffer.
void xmms_ringbuf_wait_used | ( | xmms_ringbuf_t * | ringbuf, |
guint | len, | ||
GMutex * | mtx | ||
) |
Block until we have used space in the buffer.
Referenced by xmms_output_read(), and xmms_ringbuf_peek_wait().
guint xmms_ringbuf_write | ( | xmms_ringbuf_t * | ringbuf, |
gconstpointer | data, | ||
guint | len | ||
) |
Write data to the ringbuffer.
If not all data can be written to the buffer the function will not block.
ringbuf | Ringbuffer to put data in. |
data | Data to put in ringbuffer |
len | Length of data |
Referenced by xmms_ringbuf_write_wait().
guint xmms_ringbuf_write_wait | ( | xmms_ringbuf_t * | ringbuf, |
gconstpointer | data, | ||
guint | len, | ||
GMutex * | mtx | ||
) |
Same as xmms_ringbuf_write but blocks until there is enough free space.