diff --git a/src/modules/module-client-node/client-node.c b/src/modules/module-client-node/client-node.c index b7f91f328..8502a735f 100644 --- a/src/modules/module-client-node/client-node.c +++ b/src/modules/module-client-node/client-node.c @@ -617,11 +617,12 @@ impl_node_port_set_io(struct spa_node *node, if ((mem = pw_memblock_find(data)) == NULL) return -EINVAL; - mem_offset = mem->offset; + mem_offset = SPA_PTRDIFF(data, mem->ptr); mem_size = mem->size; if (mem_size - mem_offset < size) return -EINVAL; + mem_offset += mem->offset; m = ensure_mem(impl, mem->fd, t->data.MemFd, mem->flags); memid = m->id; } @@ -965,7 +966,7 @@ client_node_done(void *data, int seq, int res) struct impl *impl = data; struct node *this = &impl->node; - if (seq == 0 && res == 0) + if (seq == 0 && res == 0 && impl->transport == NULL) setup_transport(impl); this->callbacks->done(this->callbacks_data, seq, res); @@ -1144,6 +1145,8 @@ node_init(struct node *this, this->data_source.mask = SPA_IO_IN | SPA_IO_ERR | SPA_IO_HUP; this->data_source.rmask = 0; + this->seq = 1; + return SPA_RESULT_RETURN_ASYNC(this->seq++); }