diff --git a/include/pipewire_screencast.h b/include/pipewire_screencast.h index 6ad5f41..64ae141 100644 --- a/include/pipewire_screencast.h +++ b/include/pipewire_screencast.h @@ -9,7 +9,6 @@ void xdpw_pwr_dequeue_buffer(struct xdpw_screencast_instance *cast); void xdpw_pwr_enqueue_buffer(struct xdpw_screencast_instance *cast); -void xdpw_pwr_swap_buffer(struct xdpw_screencast_instance *cast); void pwr_update_stream_param(struct xdpw_screencast_instance *cast); void xdpw_pwr_stream_create(struct xdpw_screencast_instance *cast); void xdpw_pwr_stream_destroy(struct xdpw_screencast_instance *cast); diff --git a/include/screencast_common.h b/include/screencast_common.h index f88fbd4..94cd148 100644 --- a/include/screencast_common.h +++ b/include/screencast_common.h @@ -144,7 +144,6 @@ struct xdpw_screencast_instance { bool with_cursor; int err; bool quit; - bool need_buffer; enum buffer_type buffer_type; // fps limit diff --git a/src/screencast/pipewire_screencast.c b/src/screencast/pipewire_screencast.c index 2a0eb75..1ed25b6 100644 --- a/src/screencast/pipewire_screencast.c +++ b/src/screencast/pipewire_screencast.c @@ -111,18 +111,6 @@ static uint32_t build_formats(struct spa_pod_builder *b, struct xdpw_screencast_ return param_count; } -static void pwr_handle_stream_on_process(void *data) { - logprint(TRACE, "pipewire: stream process"); - struct xdpw_screencast_instance *cast = data; - - if (cast->need_buffer) { - xdpw_pwr_dequeue_buffer(cast); - if (cast->current_frame.pw_buffer) { - cast->need_buffer = false; - } - } -} - static void pwr_handle_stream_state_changed(void *data, enum pw_stream_state old, enum pw_stream_state state, const char *error) { struct xdpw_screencast_instance *cast = data; @@ -270,7 +258,6 @@ static const struct pw_stream_events pwr_stream_events = { .param_changed = pwr_handle_stream_param_changed, .add_buffer = pwr_handle_stream_add_buffer, .remove_buffer = pwr_handle_stream_remove_buffer, - .process = pwr_handle_stream_on_process, }; void xdpw_pwr_dequeue_buffer(struct xdpw_screencast_instance *cast) { @@ -337,24 +324,6 @@ done: cast->current_frame.pw_buffer = NULL; } -void xdpw_pwr_swap_buffer(struct xdpw_screencast_instance *cast) { - logprint(TRACE, "pipewire: swapping buffers"); - - if (!cast->current_frame.pw_buffer) { - goto dequeue_buffer; - } - - xdpw_pwr_enqueue_buffer(cast); - -dequeue_buffer: - assert(!cast->current_frame.pw_buffer); - cast->need_buffer = false; - xdpw_pwr_dequeue_buffer(cast); - if (!cast->current_frame.pw_buffer) { - cast->need_buffer = true; - } -} - void pwr_update_stream_param(struct xdpw_screencast_instance *cast) { logprint(TRACE, "pipewire: stream update parameters"); struct pw_stream *stream = cast->stream; diff --git a/src/screencast/screencast.c b/src/screencast/screencast.c index f5f6003..888976e 100644 --- a/src/screencast/screencast.c +++ b/src/screencast/screencast.c @@ -70,7 +70,6 @@ void xdpw_screencast_instance_init(struct xdpw_screencast_context *ctx, cast->with_cursor = with_cursor; cast->refcount = 1; cast->node_id = SPA_ID_INVALID; - cast->need_buffer = false; wl_list_init(&cast->buffer_list); logprint(INFO, "xdpw: screencast instance %p has %d references", cast, cast->refcount); wl_list_insert(&ctx->screencast_instances, &cast->link); diff --git a/src/screencast/wlr_screencast.c b/src/screencast/wlr_screencast.c index 129068b..3a44923 100644 --- a/src/screencast/wlr_screencast.c +++ b/src/screencast/wlr_screencast.c @@ -51,7 +51,7 @@ void xdpw_wlr_frame_finish(struct xdpw_screencast_instance *cast) { } if (cast->frame_state == XDPW_FRAME_STATE_SUCCESS) { - xdpw_pwr_swap_buffer(cast); + xdpw_pwr_enqueue_buffer(cast); uint64_t delay_ns = fps_limit_measure_end(&cast->fps_limit, cast->framerate); if (delay_ns > 0) { xdpw_add_timer(cast->ctx->state, delay_ns, @@ -137,7 +137,6 @@ static void wlr_frame_buffer_done(void *data, xdpw_pwr_dequeue_buffer(cast); } - cast->need_buffer = false; if (!cast->current_frame.xdpw_buffer) { logprint(WARN, "wlroots: no current buffer"); xdpw_wlr_frame_finish(cast);