[libcamera-devel] [PATCH v3 04/22] v4l2: v4l2_camera_proxy: Free old buffers on reqbufs > 0

Paul Elder paul.elder at ideasonboard.com
Tue Jun 23 21:08:18 CEST 2020


Free buffers if any were previously allocated, at VIDIOC_REQBUFS with
count > 0.

Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>

---
New in v3
- split from... a conglomerate of v4l2-compliance fixes patch
---
 src/v4l2/v4l2_camera_proxy.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp
index eb59d49..7262453 100644
--- a/src/v4l2/v4l2_camera_proxy.cpp
+++ b/src/v4l2/v4l2_camera_proxy.cpp
@@ -361,6 +361,15 @@ int V4L2CameraProxy::vidioc_reqbufs(V4L2CameraFile *file, struct v4l2_requestbuf
 		return freeBuffers();
 	}
 
+	if (bufferCount_ > 0) {
+		int ret = freeBuffers();
+		if (ret < 0) {
+			LOG(V4L2Compat, Error)
+				<< "Failed to free libcamera buffers for re-reqbufs";
+			return ret;
+		}
+	}
+
 	Size size(curV4L2Format_.fmt.pix.width, curV4L2Format_.fmt.pix.height);
 	ret = vcam_->configure(&streamConfig_, size,
 			       v4l2ToDrm(curV4L2Format_.fmt.pix.pixelformat),
-- 
2.27.0



More information about the libcamera-devel mailing list