[RFC,v1,22/27] v4l2: v4l2_camera: Avoid a level of indirection
diff mbox series

Message ID 20260618123844.656396-23-barnabas.pocze@ideasonboard.com
State New
Headers show
Series
  • Misc. changes before request-buffer split
Related show

Commit Message

Barnabás Pőcze June 18, 2026, 12:38 p.m. UTC
Convert the `completedBuffers_` container to store the items directly
and not via an `std::unique_ptr`.

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
---
 src/v4l2/v4l2_camera.cpp | 11 ++++-------
 src/v4l2/v4l2_camera.h   |  2 +-
 2 files changed, 5 insertions(+), 8 deletions(-)

Patch
diff mbox series

diff --git a/src/v4l2/v4l2_camera.cpp b/src/v4l2/v4l2_camera.cpp
index 412ab4ea67..648578c22b 100644
--- a/src/v4l2/v4l2_camera.cpp
+++ b/src/v4l2/v4l2_camera.cpp
@@ -70,11 +70,10 @@  void V4L2Camera::unbind()
 
 std::vector<V4L2Camera::Buffer> V4L2Camera::completedBuffers()
 {
-	std::vector<Buffer> v;
-
 	MutexLocker lock(bufferLock_);
-	for (std::unique_ptr<Buffer> &metadata : completedBuffers_)
-		v.push_back(*metadata.get());
+	std::vector v(std::move_iterator(completedBuffers_.begin()),
+		      std::move_iterator(completedBuffers_.end()));
+
 	completedBuffers_.clear();
 
 	return v;
@@ -88,9 +87,7 @@  void V4L2Camera::requestComplete(Request *request)
 	/* We only have one stream at the moment. */
 	bufferLock_.lock();
 	FrameBuffer *buffer = request->buffers().begin()->second;
-	std::unique_ptr<Buffer> metadata =
-		std::make_unique<Buffer>(request->cookie(), buffer->metadata());
-	completedBuffers_.push_back(std::move(metadata));
+	completedBuffers_.emplace_back(request->cookie(), buffer->metadata());
 	bufferLock_.unlock();
 
 	uint64_t data = 1;
diff --git a/src/v4l2/v4l2_camera.h b/src/v4l2/v4l2_camera.h
index 3d09ae7d60..1528f9aad8 100644
--- a/src/v4l2/v4l2_camera.h
+++ b/src/v4l2/v4l2_camera.h
@@ -85,7 +85,7 @@  private:
 	std::vector<std::unique_ptr<libcamera::Request>> requestPool_;
 
 	std::deque<libcamera::Request *> pendingRequests_;
-	std::deque<std::unique_ptr<Buffer>> completedBuffers_
+	std::deque<Buffer> completedBuffers_
 		LIBCAMERA_TSA_GUARDED_BY(bufferLock_);
 
 	int efd_;