client-stream: allocate the right number of buffers

This commit is contained in:
Wim Taymans 2018-06-15 11:30:20 +02:00
parent ba0a68aab3
commit acfd07c504

View file

@ -520,11 +520,11 @@ static int negotiate_buffers(struct impl *impl)
if (impl->buffers) if (impl->buffers)
free(impl->buffers); free(impl->buffers);
impl->buffers = calloc(blocks, sizeof(struct spa_buffer *) + info.skel_size); impl->buffers = calloc(buffers, sizeof(struct spa_buffer *) + info.skel_size);
if (impl->buffers == NULL) if (impl->buffers == NULL)
return -ENOMEM; return -ENOMEM;
skel = SPA_MEMBER(impl->buffers, sizeof(struct spa_buffer *) * blocks, void); skel = SPA_MEMBER(impl->buffers, sizeof(struct spa_buffer *) * buffers, void);
data_size = info.meta_size + info.chunk_size + info.data_size; data_size = info.meta_size + info.chunk_size + info.data_size;
if (impl->mem) { if (impl->mem) {
@ -534,16 +534,15 @@ static int negotiate_buffers(struct impl *impl)
if ((res = pw_memblock_alloc(PW_MEMBLOCK_FLAG_WITH_FD | if ((res = pw_memblock_alloc(PW_MEMBLOCK_FLAG_WITH_FD |
PW_MEMBLOCK_FLAG_MAP_READWRITE | PW_MEMBLOCK_FLAG_MAP_READWRITE |
PW_MEMBLOCK_FLAG_SEAL, blocks * data_size, PW_MEMBLOCK_FLAG_SEAL, buffers * data_size,
&impl->mem)) < 0) &impl->mem)) < 0)
return res; return res;
impl->n_buffers = blocks; impl->n_buffers = buffers;
spa_buffer_alloc_layout_array(&info, impl->n_buffers, impl->buffers, spa_buffer_alloc_layout_array(&info, impl->n_buffers, impl->buffers,
skel, impl->mem->ptr); skel, impl->mem->ptr);
if (in_alloc) { if (in_alloc) {
if ((res = spa_node_port_alloc_buffers(impl->adapter, if ((res = spa_node_port_alloc_buffers(impl->adapter,
SPA_DIRECTION_INPUT, 0, SPA_DIRECTION_INPUT, 0,