[RFC,v1,12/54] v4l2: v4l2_camera: Use buffer cookie for indexing
diff mbox series

Message ID 20260629163017.863145-13-barnabas.pocze@ideasonboard.com
State New
Headers show
Series
  • libcamera: Split requests and buffers
Related show

Commit Message

Barnabás Pőcze June 29, 2026, 4:29 p.m. UTC
Use the buffer cookie to store the index of the buffer instead of
relying on the 1-to-1 association between requests and buffers,
which will be broken by the split of requests and buffers.

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/v4l2/v4l2_camera.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Patch
diff mbox series

diff --git a/src/v4l2/v4l2_camera.cpp b/src/v4l2/v4l2_camera.cpp
index 75428b8adc..7dd0ea1ef9 100644
--- a/src/v4l2/v4l2_camera.cpp
+++ b/src/v4l2/v4l2_camera.cpp
@@ -87,7 +87,7 @@  void V4L2Camera::requestComplete(Request *request)
 	/* We only have one stream at the moment. */
 	bufferLock_.lock();
 	FrameBuffer *buffer = request->buffers().begin()->second;
-	completedBuffers_.emplace_back(request->cookie(), buffer->metadata());
+	completedBuffers_.emplace_back(buffer->cookie(), buffer->metadata());
 	bufferLock_.unlock();
 
 	uint64_t data = 1;
@@ -171,6 +171,8 @@  int V4L2Camera::allocBuffers()
 			return -ENOMEM;
 		}
 		requestPool_.push_back(std::move(request));
+
+		buffers[i]->setCookie(i);
 	}
 
 	return buffers.size();