diff --git a/host/platform/Linux/capture/XCB/src/xcb.c b/host/platform/Linux/capture/XCB/src/xcb.c index d9947a0a..031e65a2 100644 --- a/host/platform/Linux/capture/XCB/src/xcb.c +++ b/host/platform/Linux/capture/XCB/src/xcb.c @@ -85,7 +85,11 @@ static void xcb_initOptions(void) option_register(options); } -static bool xcb_create(CaptureGetPointerBuffer getPointerBufferFn, CapturePostPointerBuffer postPointerBufferFn) +static bool xcb_create( + CaptureGetPointerBuffer getPointerBufferFn, + CapturePostPointerBuffer postPointerBufferFn, + unsigned frameBuffers +) { DEBUG_ASSERT(!this); this = calloc(1, sizeof(*this)); @@ -106,7 +110,7 @@ static bool xcb_create(CaptureGetPointerBuffer getPointerBufferFn, CapturePostPo return true; } -static bool xcb_init(void) +static bool xcb_init(void * ivshmemBase, unsigned * alignSize) { DEBUG_ASSERT(this); DEBUG_ASSERT(!this->initialized); @@ -241,7 +245,9 @@ static void xcb_free(void) this = NULL; } -static CaptureResult xcb_capture(void) +static CaptureResult xcb_capture( + unsigned frameBufferIndex, + FrameBuffer * frame) { DEBUG_ASSERT(this); DEBUG_ASSERT(this->initialized); @@ -266,8 +272,10 @@ static CaptureResult xcb_capture(void) return CAPTURE_RESULT_OK; } -static CaptureResult xcb_waitFrame(CaptureFrame * frame, - const size_t maxFrameSize) +static CaptureResult xcb_waitFrame( + unsigned frameBufferIndex, + CaptureFrame * frame, + const size_t maxFrameSize) { lgWaitEvent(this->frameEvent, TIMEOUT_INFINITE); @@ -290,7 +298,10 @@ static CaptureResult xcb_waitFrame(CaptureFrame * frame, return CAPTURE_RESULT_OK; } -static CaptureResult xcb_getFrame(FrameBuffer * frame, int frameIndex) +static CaptureResult xcb_getFrame( + unsigned frameBufferIndex, + FrameBuffer * frame, + const size_t maxFrameSize) { DEBUG_ASSERT(this); DEBUG_ASSERT(this->initialized); @@ -371,7 +382,7 @@ static int pointerThread(void * unused) pointer.height = curReply->height; pointer.pitch = curReply->width * 4; - this->postPointerBufferFn(pointer); + this->postPointerBufferFn(&pointer); } free(curReply); diff --git a/host/platform/Linux/capture/pipewire/src/pipewire.c b/host/platform/Linux/capture/pipewire/src/pipewire.c index 4c4e5c2d..6b53396e 100644 --- a/host/platform/Linux/capture/pipewire/src/pipewire.c +++ b/host/platform/Linux/capture/pipewire/src/pipewire.c @@ -68,7 +68,11 @@ static const char * pipewire_getName(void) return "PipeWire"; } -static bool pipewire_create(CaptureGetPointerBuffer getPointerBufferFn, CapturePostPointerBuffer postPointerBufferFn) +static bool pipewire_create( + CaptureGetPointerBuffer getPointerBufferFn, + CapturePostPointerBuffer postPointerBufferFn, + unsigned frameBuffers +) { DEBUG_ASSERT(!this); pw_init(NULL, NULL); @@ -231,7 +235,7 @@ static const struct pw_stream_events streamEvents = { .param_changed = streamParamChangedCallback, }; -static bool pipewire_init(void) +static bool pipewire_init(void * ivshmemBase, unsigned * alignSize) { DEBUG_ASSERT(this); this->stop = false; @@ -400,7 +404,9 @@ static void pipewire_free(void) this = NULL; } -static CaptureResult pipewire_capture(void) +static CaptureResult pipewire_capture( + unsigned frameBufferIndex, + FrameBuffer * frame) { int result; @@ -424,8 +430,10 @@ restart: return CAPTURE_RESULT_OK; } -static CaptureResult pipewire_waitFrame(CaptureFrame * frame, - const size_t maxFrameSize) +static CaptureResult pipewire_waitFrame( + unsigned frameBufferIndex, + CaptureFrame * frame, + const size_t maxFrameSize) { if (this->stop) return CAPTURE_RESULT_REINIT; @@ -454,7 +462,10 @@ static CaptureResult pipewire_waitFrame(CaptureFrame * frame, return CAPTURE_RESULT_OK; } -static CaptureResult pipewire_getFrame(FrameBuffer * frame, int frameIndex) +static CaptureResult pipewire_getFrame( + unsigned frameBufferIndex, + FrameBuffer * frame, + const size_t maxFrameSize) { if (this->stop || !this->frameData) return CAPTURE_RESULT_REINIT;