spa: clean up some port io checks

We should not generate a warning.
This commit is contained in:
Wim Taymans 2022-09-01 15:39:34 +02:00
parent 2fa1b4384b
commit 9123710971
7 changed files with 42 additions and 43 deletions

View file

@ -699,40 +699,39 @@ static int impl_node_process(void *object)
{
struct state *this = object;
struct port *port;
struct spa_io_buffers *input;
struct spa_io_buffers *io;
spa_return_val_if_fail(this != NULL, -EINVAL);
port = GET_PORT(this, SPA_DIRECTION_INPUT, 0);
if ((io = port->io) == NULL)
return -EIO;
input = port->io;
spa_return_val_if_fail(input != NULL, -EIO);
spa_log_trace_fp(this->log, "%p: process %d %d/%d", this, input->status,
input->buffer_id, port->n_buffers);
spa_log_trace_fp(this->log, "%p: process %d %d/%d", this, io->status,
io->buffer_id, port->n_buffers);
if (this->position && this->position->clock.flags & SPA_IO_CLOCK_FLAG_FREEWHEEL) {
input->status = SPA_STATUS_NEED_DATA;
io->status = SPA_STATUS_NEED_DATA;
return SPA_STATUS_HAVE_DATA;
}
if (input->status == SPA_STATUS_HAVE_DATA &&
input->buffer_id < port->n_buffers) {
struct buffer *b = &port->buffers[input->buffer_id];
if (io->status == SPA_STATUS_HAVE_DATA &&
io->buffer_id < port->n_buffers) {
struct buffer *b = &port->buffers[io->buffer_id];
if (!SPA_FLAG_IS_SET(b->flags, BUFFER_FLAG_OUT)) {
spa_log_warn(this->log, "%p: buffer %u in use",
this, input->buffer_id);
input->status = -EINVAL;
this, io->buffer_id);
io->status = -EINVAL;
return -EINVAL;
}
spa_log_trace_fp(this->log, "%p: queue buffer %u", this, input->buffer_id);
spa_log_trace_fp(this->log, "%p: queue buffer %u", this, io->buffer_id);
spa_list_append(&port->ready, &b->link);
SPA_FLAG_CLEAR(b->flags, BUFFER_FLAG_OUT);
input->buffer_id = SPA_ID_INVALID;
io->buffer_id = SPA_ID_INVALID;
spa_avb_write(this);
input->status = SPA_STATUS_OK;
io->status = SPA_STATUS_OK;
}
return SPA_STATUS_HAVE_DATA;
}