diff --git a/src/pipewire.cpp b/src/pipewire.cpp index 9340931..50851d3 100644 --- a/src/pipewire.cpp +++ b/src/pipewire.cpp @@ -50,7 +50,6 @@ static void request_buffer(struct pipewire_state *state) struct pw_buffer *pw_buffer = pw_stream_dequeue_buffer(state->stream); if (!pw_buffer) { pwr_log.errorf("warning: out of buffers"); - state->needs_buffer = true; return; } @@ -136,10 +135,6 @@ static void dispatch_nudge(struct pipewire_state *state, int fd) } else { destroy_buffer(buffer); } - - if (state->streaming) { - request_buffer(state); - } } } @@ -159,7 +154,6 @@ static void stream_handle_state_changed(void *data, enum pw_stream_state old_str break; case PW_STREAM_STATE_STREAMING: state->streaming = true; - request_buffer(state); break; case PW_STREAM_STATE_ERROR: case PW_STREAM_STATE_UNCONNECTED: @@ -215,16 +209,6 @@ static void stream_handle_param_changed(void *data, uint32_t id, const struct sp } } -static void stream_handle_process(void *data) -{ - struct pipewire_state *state = (struct pipewire_state *) data; - - if (state->needs_buffer) { - state->needs_buffer = false; - request_buffer(state); - } -} - static void randname(char *buf) { struct timespec ts; @@ -322,7 +306,7 @@ static const struct pw_stream_events stream_events = { .param_changed = stream_handle_param_changed, .add_buffer = stream_handle_add_buffer, .remove_buffer = stream_handle_remove_buffer, - .process = stream_handle_process, + .process = nullptr, }; enum event_type { @@ -456,6 +440,10 @@ uint32_t get_pipewire_stream_node_id(void) struct pipewire_buffer *dequeue_pipewire_buffer(void) { + struct pipewire_state *state = &pipewire_state; + if (state->streaming) { + request_buffer(state); + } return out_buffer.exchange(nullptr); } diff --git a/src/pipewire.hpp b/src/pipewire.hpp index d5bcf72..e4136de 100644 --- a/src/pipewire.hpp +++ b/src/pipewire.hpp @@ -15,7 +15,6 @@ struct pipewire_state { struct pw_stream *stream; uint32_t stream_node_id; bool streaming; - bool needs_buffer; struct spa_video_info_raw video_info; int stride; uint64_t seq;