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

Message ID 20200624145256.48266-5-paul.elder@ideasonboard.com
State Accepted
Headers show
Series
  • Support v4l2-compliance
Related show

Commit Message

Paul Elder June 24, 2020, 2:52 p.m. UTC
Free buffers, if any were previously allocated, at VIDIOC_REQBUFS with
count > 0.

Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

---
Changes in v4:
- don't check return value of V4L2CameraProxy::freeBuffers()

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

Patch

diff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp
index 240420c..c6959a8 100644
--- a/src/v4l2/v4l2_camera_proxy.cpp
+++ b/src/v4l2/v4l2_camera_proxy.cpp
@@ -359,6 +359,9 @@  int V4L2CameraProxy::vidioc_reqbufs(V4L2CameraFile *file, struct v4l2_requestbuf
 		return 0;
 	}
 
+	if (bufferCount_ > 0)
+		freeBuffers();
+
 	Size size(curV4L2Format_.fmt.pix.width, curV4L2Format_.fmt.pix.height);
 	int ret = vcam_->configure(&streamConfig_, size,
 				   v4l2ToDrm(curV4L2Format_.fmt.pix.pixelformat),