mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05:00
fix use_buffers checks
We can set 0 buffers even if there is no format. Return -ENOSPC when too many buffers are set.
This commit is contained in:
parent
9f3237b74e
commit
97aafe2234
31 changed files with 146 additions and 88 deletions
|
|
@ -46,6 +46,7 @@
|
|||
#define M_PI_M2 ( M_PI + M_PI )
|
||||
|
||||
#define BUFFER_SAMPLES 128
|
||||
#define MAX_BUFFERS 32
|
||||
|
||||
struct buffer {
|
||||
uint32_t id;
|
||||
|
|
@ -79,7 +80,7 @@ struct data {
|
|||
|
||||
struct spa_audio_info_raw format;
|
||||
|
||||
struct buffer buffers[32];
|
||||
struct buffer buffers[MAX_BUFFERS];
|
||||
uint32_t n_buffers;
|
||||
struct spa_list empty;
|
||||
|
||||
|
|
@ -325,6 +326,9 @@ static int impl_port_use_buffers(void *object,
|
|||
struct data *d = object;
|
||||
uint32_t i;
|
||||
|
||||
if (n_buffers > MAX_BUFFERS)
|
||||
return -ENOSPC;
|
||||
|
||||
for (i = 0; i < n_buffers; i++) {
|
||||
struct buffer *b = &d->buffers[i];
|
||||
struct spa_data *datas = buffers[i]->datas;
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@
|
|||
#define WIDTH 640
|
||||
#define HEIGHT 480
|
||||
#define BPP 3
|
||||
#define MAX_BUFFERS 32
|
||||
|
||||
#include "sdl.h"
|
||||
|
||||
|
|
@ -68,7 +69,7 @@ struct data {
|
|||
struct spa_video_info_raw format;
|
||||
int32_t stride;
|
||||
|
||||
struct spa_buffer *buffers[32];
|
||||
struct spa_buffer *buffers[MAX_BUFFERS];
|
||||
int n_buffers;
|
||||
|
||||
struct pw_proxy *out, *in, *link;
|
||||
|
|
@ -264,6 +265,9 @@ static int impl_port_use_buffers(void *object,
|
|||
struct data *d = object;
|
||||
uint32_t i;
|
||||
|
||||
if (n_buffers > MAX_BUFFERS)
|
||||
return -ENOSPC;
|
||||
|
||||
for (i = 0; i < n_buffers; i++)
|
||||
d->buffers[i] = buffers[i];
|
||||
d->n_buffers = n_buffers;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue