diff --git a/spa/plugins/alsa/alsa-sink.c b/spa/plugins/alsa/alsa-sink.c index 42b6f061f..0f27d87ce 100644 --- a/spa/plugins/alsa/alsa-sink.c +++ b/spa/plugins/alsa/alsa-sink.c @@ -597,7 +597,6 @@ static int impl_node_process_input(struct spa_node *node) spa_list_append(&this->ready, &b->link); SPA_FLAG_UNSET(b->flags, BUFFER_FLAG_OUT); - input->buffer_id = SPA_ID_INVALID; input->status = SPA_STATUS_OK; } diff --git a/spa/plugins/alsa/alsa-utils.c b/spa/plugins/alsa/alsa-utils.c index 19f597292..e8897e1c7 100644 --- a/spa/plugins/alsa/alsa-utils.c +++ b/spa/plugins/alsa/alsa-utils.c @@ -343,6 +343,8 @@ static inline void try_pull(struct state *state, snd_pcm_uframes_t frames, if (spa_list_is_empty(&state->ready) && do_pull) { spa_log_trace(state->log, "alsa-util %p: %d %lu", state, io->status, state->filled + written); + if (io->status == SPA_STATUS_NEED_BUFFER) + return; io->status = SPA_STATUS_NEED_BUFFER; if (state->range) { state->range->offset = state->sample_count * state->frame_size;