[outputs] Add helpers for output buffer copy and free

This commit is contained in:
ejurgensen 2023-05-01 23:32:57 +02:00
parent cd62070fdb
commit 701bad466e
2 changed files with 55 additions and 0 deletions

View File

@ -389,6 +389,43 @@ buffer_drain(struct output_buffer *obuf)
}
}
static struct output_buffer *
buffer_copy(struct output_buffer *obuf)
{
struct output_buffer *copy;
int i;
if (!obuf)
return NULL;
CHECK_NULL(L_PLAYER, copy = malloc(sizeof(struct output_buffer)));
memcpy(copy, obuf, sizeof(struct output_buffer));
for (i = 0; obuf->data[i].buffer; i++)
{
CHECK_NULL(L_PLAYER, copy->data[i].evbuf = evbuffer_new());
evbuffer_add(copy->data[i].evbuf, obuf->data[i].buffer, obuf->data[i].bufsize);
copy->data[i].buffer = evbuffer_pullup(copy->data[i].evbuf, -1);
}
return copy;
}
static void
buffer_free(struct output_buffer *obuf)
{
int i;
if (!obuf)
return;
for (i = 0; obuf->data[i].buffer; i++)
evbuffer_free(obuf->data[i].evbuf);
free(obuf);
}
static void
device_list_sort(void)
{
@ -561,6 +598,18 @@ vol_adjust(void)
/* ----------------------------------- API ---------------------------------- */
struct output_buffer *
outputs_buffer_copy(struct output_buffer *buffer)
{
return buffer_copy(buffer);
}
void
outputs_buffer_free(struct output_buffer *buffer)
{
buffer_free(buffer);
}
struct output_device *
outputs_device_get(uint64_t device_id)
{

View File

@ -264,6 +264,12 @@ struct output_definition
/* ------------------------------- General use ------------------------------ */
struct output_buffer *
outputs_buffer_copy(struct output_buffer *buffer);
void
outputs_buffer_free(struct output_buffer *buffer);
struct output_device *
outputs_device_get(uint64_t device_id);