diff --git a/spa/plugins/audioconvert/audioadapter.c b/spa/plugins/audioconvert/audioadapter.c index 280aeee91..11f335150 100644 --- a/spa/plugins/audioconvert/audioadapter.c +++ b/spa/plugins/audioconvert/audioadapter.c @@ -169,7 +169,7 @@ static int link_io(struct impl *this) res, spa_strerror(res)); } - spa_zero(this->io_buffers); + this->io_buffers = SPA_IO_BUFFERS_INIT; if ((res = spa_node_port_set_io(this->follower, this->direction, 0, diff --git a/spa/plugins/audioconvert/audioconvert.c b/spa/plugins/audioconvert/audioconvert.c index 34564b2f8..c308ab7ee 100644 --- a/spa/plugins/audioconvert/audioconvert.c +++ b/spa/plugins/audioconvert/audioconvert.c @@ -143,8 +143,7 @@ static int make_link(struct impl *this, l->in_port = in_port; l->in_flags = 0; l->negotiated = false; - l->io.status = SPA_STATUS_NEED_DATA; - l->io.buffer_id = SPA_ID_INVALID; + l->io = SPA_IO_BUFFERS_INIT; l->n_buffers = 0; l->min_buffers = min_buffers; diff --git a/spa/plugins/videoconvert/videoadapter.c b/spa/plugins/videoconvert/videoadapter.c index ac06ec459..8555f4c31 100644 --- a/spa/plugins/videoconvert/videoadapter.c +++ b/spa/plugins/videoconvert/videoadapter.c @@ -165,7 +165,7 @@ static int link_io(struct impl *this) res, spa_strerror(res)); } - spa_zero(this->io_buffers); + this->io_buffers = SPA_IO_BUFFERS_INIT; if ((res = spa_node_port_set_io(this->follower, this->direction, 0, diff --git a/src/pipewire/impl-link.c b/src/pipewire/impl-link.c index 4e50dfd2f..63f84c41c 100644 --- a/src/pipewire/impl-link.c +++ b/src/pipewire/impl-link.c @@ -1110,8 +1110,7 @@ struct pw_impl_link *pw_context_create_link(struct pw_context *context, this->info.format = NULL; this->info.props = &this->properties->dict; - impl->io.buffer_id = SPA_ID_INVALID; - impl->io.status = SPA_STATUS_NEED_DATA; + impl->io = SPA_IO_BUFFERS_INIT; pw_impl_port_init_mix(output, &this->rt.out_mix); pw_impl_port_init_mix(input, &this->rt.in_mix); diff --git a/src/pipewire/impl-port.c b/src/pipewire/impl-port.c index f2215f271..fa3a33dbd 100644 --- a/src/pipewire/impl-port.c +++ b/src/pipewire/impl-port.c @@ -430,8 +430,6 @@ struct pw_impl_port *pw_context_create_port( pw_map_init(&this->mix_port_map, 64, 64); - this->rt.io.status = SPA_STATUS_NEED_DATA; - if (info) update_info(this, info); diff --git a/src/pipewire/stream.c b/src/pipewire/stream.c index 8b8046d0c..b11a5b20d 100644 --- a/src/pipewire/stream.c +++ b/src/pipewire/stream.c @@ -379,13 +379,11 @@ static int impl_send_command(void *object, const struct spa_command *command) if (stream->state == PW_STREAM_STATE_PAUSED) { pw_log_debug(NAME" %p: start %d", stream, impl->direction); - if (impl->direction == SPA_DIRECTION_INPUT) { + if (impl->direction == SPA_DIRECTION_INPUT) impl->io->status = SPA_STATUS_NEED_DATA; - impl->io->buffer_id = SPA_ID_INVALID; - } - else { + else call_process(impl); - } + stream_set_state(stream, PW_STREAM_STATE_STREAMING, NULL); } break;