summaryrefslogtreecommitdiff
path: root/src/libcamera/v4l2_videodevice.cpp
diff options
context:
space:
mode:
authorNiklas Söderlund <niklas.soderlund@ragnatech.se>2019-10-26 01:51:11 +0200
committerNiklas Söderlund <niklas.soderlund@ragnatech.se>2019-11-20 00:35:00 +0100
commitc360857c5d57e21772af015477da305817b16bbb (patch)
treec8fdf17327c7deded5503612cbc8a8683a39fa84 /src/libcamera/v4l2_videodevice.cpp
parentc1a287d4b481140d1e647c4bdda97fa81475161c (diff)
libcamera: v4l2_videodevice: Simplify error checking for requestBuffers()
There is no point in explicitly checking the same error in the only call sites for the internal function, centralize the check and simplify the code. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/libcamera/v4l2_videodevice.cpp')
-rw-r--r--src/libcamera/v4l2_videodevice.cpp31
1 files changed, 10 insertions, 21 deletions
diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp
index 3f2dc279..99213075 100644
--- a/src/libcamera/v4l2_videodevice.cpp
+++ b/src/libcamera/v4l2_videodevice.cpp
@@ -821,9 +821,16 @@ int V4L2VideoDevice::requestBuffers(unsigned int count)
return ret;
}
+ if (rb.count < count) {
+ LOG(V4L2, Error)
+ << "Not enough buffers provided by V4L2VideoDevice";
+ requestBuffers(0);
+ return -ENOMEM;
+ }
+
LOG(V4L2, Debug) << rb.count << " buffers requested.";
- return rb.count;
+ return 0;
}
/**
@@ -834,24 +841,15 @@ int V4L2VideoDevice::requestBuffers(unsigned int count)
*/
int V4L2VideoDevice::exportBuffers(BufferPool *pool)
{
- unsigned int allocatedBuffers;
unsigned int i;
int ret;
memoryType_ = V4L2_MEMORY_MMAP;
ret = requestBuffers(pool->count());
- if (ret < 0)
+ if (ret)
return ret;
- allocatedBuffers = ret;
- if (allocatedBuffers < pool->count()) {
- LOG(V4L2, Error)
- << "Not enough buffers provided by V4L2VideoDevice";
- requestBuffers(0);
- return -ENOMEM;
- }
-
/* Map the buffers. */
for (i = 0; i < pool->count(); ++i) {
struct v4l2_plane planes[VIDEO_MAX_PLANES] = {};
@@ -938,23 +936,14 @@ int V4L2VideoDevice::createPlane(BufferMemory *buffer, unsigned int index,
*/
int V4L2VideoDevice::importBuffers(BufferPool *pool)
{
- unsigned int allocatedBuffers;
int ret;
memoryType_ = V4L2_MEMORY_DMABUF;
ret = requestBuffers(pool->count());
- if (ret < 0)
+ if (ret)
return ret;
- allocatedBuffers = ret;
- if (allocatedBuffers < pool->count()) {
- LOG(V4L2, Error)
- << "Not enough buffers provided by V4L2VideoDevice";
- requestBuffers(0);
- return -ENOMEM;
- }
-
LOG(V4L2, Debug) << "provided pool of " << pool->count() << " buffers";
bufferPool_ = pool;