From 852e1c95c7bbe217b1acc06b07518732bda994b9 Mon Sep 17 00:00:00 2001 From: columbarius Date: Sat, 5 Mar 2022 12:27:33 +0100 Subject: [PATCH] screencast: HACK set an arbitrary chunk size for dmabufs Clients have wrongly used the chunk size to detect if a buffer was valid or not. Since dmabufs might not have a well defined buffer size we will set an arbitrary value until clients are patched. --- src/screencast/pipewire_screencast.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/screencast/pipewire_screencast.c b/src/screencast/pipewire_screencast.c index 844fa05..1149d97 100644 --- a/src/screencast/pipewire_screencast.c +++ b/src/screencast/pipewire_screencast.c @@ -233,6 +233,12 @@ static void pwr_handle_stream_add_buffer(void *data, struct pw_buffer *buffer) { d[0].flags = 0; d[0].fd = xdpw_buffer->fd; d[0].data = NULL; + + // clients have implemented to check chunk->size if the buffer is valid instead + // of using the flags. Until they are patched we should use some arbitrary value. + if (xdpw_buffer->buffer_type == DMABUF && d[0].chunk->size == 0) { + d[0].chunk->size = 9; // This was choosen by a fair d20. + } } static void pwr_handle_stream_remove_buffer(void *data, struct pw_buffer *buffer) {