Message ID | 20200104050947.7673-15-laurent.pinchart@ideasonboard.com |
---|---|
State | Accepted |
Commit | b4415f1c9863a2fda42e1882ed4857de9d9366b1 |
Headers | show |
Series |
|
Related | show |
Hi Laurent, Thank for your work. On 2020-01-04 07:09:47 +0200, Laurent Pinchart wrote: > Now that Object::invokeMethod() supports returning a value, use it and > drop the return value method argument. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Looks much nicer, Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> > --- > src/v4l2/v4l2_camera.cpp | 109 +++++++++++++++------------------ > src/v4l2/v4l2_camera.h | 18 +++--- > src/v4l2/v4l2_camera_proxy.cpp | 51 ++++++++------- > 3 files changed, 82 insertions(+), 96 deletions(-) > > diff --git a/src/v4l2/v4l2_camera.cpp b/src/v4l2/v4l2_camera.cpp > index 3590730fde08..4545483cf1c7 100644 > --- a/src/v4l2/v4l2_camera.cpp > +++ b/src/v4l2/v4l2_camera.cpp > @@ -34,23 +34,21 @@ V4L2Camera::~V4L2Camera() > camera_->release(); > } > > -void V4L2Camera::open(int *ret) > +int V4L2Camera::open() > { > /* \todo Support multiple open. */ > if (camera_->acquire() < 0) { > LOG(V4L2Compat, Error) << "Failed to acquire camera"; > - *ret = -EINVAL; > - return; > + return -EINVAL; > } > > config_ = camera_->generateConfiguration({ StreamRole::Viewfinder }); > if (!config_) { > camera_->release(); > - *ret = -EINVAL; > - return; > + return -EINVAL; > } > > - *ret = 0; > + return 0; > } > > void V4L2Camera::close() > @@ -92,9 +90,9 @@ void V4L2Camera::requestComplete(Request *request) > bufferSema_.release(); > } > > -void V4L2Camera::configure(int *ret, StreamConfiguration *streamConfigOut, > - const Size &size, PixelFormat pixelformat, > - unsigned int bufferCount) > +int V4L2Camera::configure(StreamConfiguration *streamConfigOut, > + const Size &size, PixelFormat pixelformat, > + unsigned int bufferCount) > { > StreamConfiguration &streamConfig = config_->at(0); > streamConfig.size.width = size.width; > @@ -106,8 +104,7 @@ void V4L2Camera::configure(int *ret, StreamConfiguration *streamConfigOut, > CameraConfiguration::Status validation = config_->validate(); > if (validation == CameraConfiguration::Invalid) { > LOG(V4L2Compat, Debug) << "Configuration invalid"; > - *ret = -EINVAL; > - return; > + return -EINVAL; > } > if (validation == CameraConfiguration::Adjusted) > LOG(V4L2Compat, Debug) << "Configuration adjusted"; > @@ -115,24 +112,25 @@ void V4L2Camera::configure(int *ret, StreamConfiguration *streamConfigOut, > LOG(V4L2Compat, Debug) << "Validated configuration is: " > << streamConfig.toString(); > > - *ret = camera_->configure(config_.get()); > - if (*ret < 0) > - return; > + int ret = camera_->configure(config_.get()); > + if (ret < 0) > + return ret; > > *streamConfigOut = config_->at(0); > + > + return 0; > } > > -void V4L2Camera::mmap(void **ret, unsigned int index) > +void *V4L2Camera::mmap(unsigned int index) > { > Stream *stream = *camera_->streams().begin(); > - *ret = stream->buffers()[index].planes()[0].mem(); > + return stream->buffers()[index].planes()[0].mem(); > } > > -void V4L2Camera::allocBuffers(int *ret, unsigned int count) > +int V4L2Camera::allocBuffers(unsigned int count) > { > - *ret = camera_->allocateBuffers(); > - if (*ret == -EACCES) > - *ret = -EBUSY; > + int ret = camera_->allocateBuffers(); > + return ret == -EACCES ? -EBUSY : ret; > } > > void V4L2Camera::freeBuffers() > @@ -140,85 +138,76 @@ void V4L2Camera::freeBuffers() > camera_->freeBuffers(); > } > > -void V4L2Camera::streamOn(int *ret) > +int V4L2Camera::streamOn() > { > - *ret = 0; > - > if (isRunning_) > - return; > + return 0; > + > + int ret = camera_->start(); > + if (ret < 0) > + return ret == -EACCES ? -EBUSY : ret; > > - *ret = camera_->start(); > - if (*ret < 0) { > - if (*ret == -EACCES) > - *ret = -EBUSY; > - return; > - } > isRunning_ = true; > > for (std::unique_ptr<Request> &req : pendingRequests_) { > /* \todo What should we do if this returns -EINVAL? */ > - *ret = camera_->queueRequest(req.release()); > - if (*ret < 0) { > - if (*ret == -EACCES) > - *ret = -EBUSY; > - return; > - } > + ret = camera_->queueRequest(req.release()); > + if (ret < 0) > + return ret == -EACCES ? -EBUSY : ret; > } > > pendingRequests_.clear(); > + > + return 0; > } > > -void V4L2Camera::streamOff(int *ret) > +int V4L2Camera::streamOff() > { > - *ret = 0; > - > /* \todo Restore buffers to reqbufs state? */ > if (!isRunning_) > - return; > + return 0; > + > + int ret = camera_->stop(); > + if (ret < 0) > + return ret == -EACCES ? -EBUSY : ret; > > - *ret = camera_->stop(); > - if (*ret < 0) { > - if (*ret == -EACCES) > - *ret = -EBUSY; > - return; > - } > isRunning_ = false; > + > + return 0; > } > > -void V4L2Camera::qbuf(int *ret, unsigned int index) > +int V4L2Camera::qbuf(unsigned int index) > { > Stream *stream = config_->at(0).stream(); > std::unique_ptr<Buffer> buffer = stream->createBuffer(index); > if (!buffer) { > LOG(V4L2Compat, Error) << "Can't create buffer"; > - *ret = -ENOMEM; > - return; > + return -ENOMEM; > } > > std::unique_ptr<Request> request = > std::unique_ptr<Request>(camera_->createRequest()); > if (!request) { > LOG(V4L2Compat, Error) << "Can't create request"; > - *ret = -ENOMEM; > - return; > + return -ENOMEM; > } > > - *ret = request->addBuffer(std::move(buffer)); > - if (*ret < 0) { > + int ret = request->addBuffer(std::move(buffer)); > + if (ret < 0) { > LOG(V4L2Compat, Error) << "Can't set buffer for request"; > - *ret = -ENOMEM; > - return; > + return -ENOMEM; > } > > if (!isRunning_) { > pendingRequests_.push_back(std::move(request)); > - return; > + return 0; > } > > - *ret = camera_->queueRequest(request.release()); > - if (*ret < 0) { > + ret = camera_->queueRequest(request.release()); > + if (ret < 0) { > LOG(V4L2Compat, Error) << "Can't queue request"; > - if (*ret == -EACCES) > - *ret = -EBUSY; > + return ret == -EACCES ? -EBUSY : ret; > } > + > + return 0; > } > diff --git a/src/v4l2/v4l2_camera.h b/src/v4l2/v4l2_camera.h > index d24dbca6aaf4..5a889efdb4a2 100644 > --- a/src/v4l2/v4l2_camera.h > +++ b/src/v4l2/v4l2_camera.h > @@ -48,23 +48,23 @@ public: > V4L2Camera(std::shared_ptr<Camera> camera); > ~V4L2Camera(); > > - void open(int *ret); > + int open(); > void close(); > void getStreamConfig(StreamConfiguration *streamConfig); > std::vector<FrameMetadata> completedBuffers(); > > - void mmap(void **ret, unsigned int index); > + void *mmap(unsigned int index); > > - void configure(int *ret, StreamConfiguration *streamConfigOut, > - const Size &size, PixelFormat pixelformat, > - unsigned int bufferCount); > + int configure(StreamConfiguration *streamConfigOut, > + const Size &size, PixelFormat pixelformat, > + unsigned int bufferCount); > > - void allocBuffers(int *ret, unsigned int count); > + int allocBuffers(unsigned int count); > void freeBuffers(); > - void streamOn(int *ret); > - void streamOff(int *ret); > + int streamOn(); > + int streamOff(); > > - void qbuf(int *ret, unsigned int index); > + int qbuf(unsigned int index); > > Semaphore bufferSema_; > > diff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp > index 559caba69270..2eeb12396d90 100644 > --- a/src/v4l2/v4l2_camera_proxy.cpp > +++ b/src/v4l2/v4l2_camera_proxy.cpp > @@ -40,9 +40,8 @@ int V4L2CameraProxy::open(bool nonBlocking) > { > LOG(V4L2Compat, Debug) << "Servicing open"; > > - int ret; > - vcam_->invokeMethod(&V4L2Camera::open, ConnectionTypeBlocking, > - &ret); > + int ret = vcam_->invokeMethod(&V4L2Camera::open, > + ConnectionTypeBlocking); > if (ret < 0) { > errno = -ret; > return -1; > @@ -91,9 +90,8 @@ void *V4L2CameraProxy::mmap(size_t length, int prot, int flags, off_t offset) > return MAP_FAILED; > } > > - void *val; > - vcam_->invokeMethod(&V4L2Camera::mmap, ConnectionTypeBlocking, > - &val, index); > + void *val = vcam_->invokeMethod(&V4L2Camera::mmap, > + ConnectionTypeBlocking, index); > > buffers_[index].flags |= V4L2_BUF_FLAG_MAPPED; > mmaps_[val] = index; > @@ -245,9 +243,11 @@ int V4L2CameraProxy::vidioc_s_fmt(struct v4l2_format *arg) > return ret; > > Size size(arg->fmt.pix.width, arg->fmt.pix.height); > - vcam_->invokeMethod(&V4L2Camera::configure, ConnectionTypeBlocking, > - &ret, &streamConfig_, size, > - v4l2ToDrm(arg->fmt.pix.pixelformat), bufferCount_); > + ret = vcam_->invokeMethod(&V4L2Camera::configure, > + ConnectionTypeBlocking, > + &streamConfig_, size, > + v4l2ToDrm(arg->fmt.pix.pixelformat), > + bufferCount_); > if (ret < 0) > return -EINVAL; > > @@ -297,9 +297,8 @@ int V4L2CameraProxy::freeBuffers() > { > LOG(V4L2Compat, Debug) << "Freeing libcamera bufs"; > > - int ret; > - vcam_->invokeMethod(&V4L2Camera::streamOff, > - ConnectionTypeBlocking, &ret); > + int ret = vcam_->invokeMethod(&V4L2Camera::streamOff, > + ConnectionTypeBlocking); > if (ret < 0) { > LOG(V4L2Compat, Error) << "Failed to stop stream"; > return ret; > @@ -327,10 +326,11 @@ int V4L2CameraProxy::vidioc_reqbufs(struct v4l2_requestbuffers *arg) > return freeBuffers(); > > Size size(curV4L2Format_.fmt.pix.width, curV4L2Format_.fmt.pix.height); > - vcam_->invokeMethod(&V4L2Camera::configure, ConnectionTypeBlocking, > - &ret, &streamConfig_, size, > - v4l2ToDrm(curV4L2Format_.fmt.pix.pixelformat), > - arg->count); > + ret = vcam_->invokeMethod(&V4L2Camera::configure, > + ConnectionTypeBlocking, > + &streamConfig_, size, > + v4l2ToDrm(curV4L2Format_.fmt.pix.pixelformat), > + arg->count); > if (ret < 0) > return -EINVAL; > > @@ -343,8 +343,8 @@ int V4L2CameraProxy::vidioc_reqbufs(struct v4l2_requestbuffers *arg) > arg->count = streamConfig_.bufferCount; > bufferCount_ = arg->count; > > - vcam_->invokeMethod(&V4L2Camera::allocBuffers, > - ConnectionTypeBlocking, &ret, arg->count); > + ret = vcam_->invokeMethod(&V4L2Camera::allocBuffers, > + ConnectionTypeBlocking, arg->count); > if (ret < 0) { > arg->count = 0; > return ret; > @@ -392,9 +392,8 @@ int V4L2CameraProxy::vidioc_qbuf(struct v4l2_buffer *arg) > arg->index >= bufferCount_) > return -EINVAL; > > - int ret; > - vcam_->invokeMethod(&V4L2Camera::qbuf, ConnectionTypeBlocking, > - &ret, arg->index); > + int ret = vcam_->invokeMethod(&V4L2Camera::qbuf, ConnectionTypeBlocking, > + arg->index); > if (ret < 0) > return ret; > > @@ -437,9 +436,8 @@ int V4L2CameraProxy::vidioc_streamon(int *arg) > if (!validateBufferType(*arg)) > return -EINVAL; > > - int ret; > - vcam_->invokeMethod(&V4L2Camera::streamOn, > - ConnectionTypeBlocking, &ret); > + int ret = vcam_->invokeMethod(&V4L2Camera::streamOn, > + ConnectionTypeBlocking); > > return ret; > } > @@ -451,9 +449,8 @@ int V4L2CameraProxy::vidioc_streamoff(int *arg) > if (!validateBufferType(*arg)) > return -EINVAL; > > - int ret; > - vcam_->invokeMethod(&V4L2Camera::streamOff, > - ConnectionTypeBlocking, &ret); > + int ret = vcam_->invokeMethod(&V4L2Camera::streamOff, > + ConnectionTypeBlocking); > > for (struct v4l2_buffer &buf : buffers_) > buf.flags &= ~(V4L2_BUF_FLAG_QUEUED | V4L2_BUF_FLAG_DONE); > -- > Regards, > > Laurent Pinchart > > _______________________________________________ > libcamera-devel mailing list > libcamera-devel@lists.libcamera.org > https://lists.libcamera.org/listinfo/libcamera-devel
diff --git a/src/v4l2/v4l2_camera.cpp b/src/v4l2/v4l2_camera.cpp index 3590730fde08..4545483cf1c7 100644 --- a/src/v4l2/v4l2_camera.cpp +++ b/src/v4l2/v4l2_camera.cpp @@ -34,23 +34,21 @@ V4L2Camera::~V4L2Camera() camera_->release(); } -void V4L2Camera::open(int *ret) +int V4L2Camera::open() { /* \todo Support multiple open. */ if (camera_->acquire() < 0) { LOG(V4L2Compat, Error) << "Failed to acquire camera"; - *ret = -EINVAL; - return; + return -EINVAL; } config_ = camera_->generateConfiguration({ StreamRole::Viewfinder }); if (!config_) { camera_->release(); - *ret = -EINVAL; - return; + return -EINVAL; } - *ret = 0; + return 0; } void V4L2Camera::close() @@ -92,9 +90,9 @@ void V4L2Camera::requestComplete(Request *request) bufferSema_.release(); } -void V4L2Camera::configure(int *ret, StreamConfiguration *streamConfigOut, - const Size &size, PixelFormat pixelformat, - unsigned int bufferCount) +int V4L2Camera::configure(StreamConfiguration *streamConfigOut, + const Size &size, PixelFormat pixelformat, + unsigned int bufferCount) { StreamConfiguration &streamConfig = config_->at(0); streamConfig.size.width = size.width; @@ -106,8 +104,7 @@ void V4L2Camera::configure(int *ret, StreamConfiguration *streamConfigOut, CameraConfiguration::Status validation = config_->validate(); if (validation == CameraConfiguration::Invalid) { LOG(V4L2Compat, Debug) << "Configuration invalid"; - *ret = -EINVAL; - return; + return -EINVAL; } if (validation == CameraConfiguration::Adjusted) LOG(V4L2Compat, Debug) << "Configuration adjusted"; @@ -115,24 +112,25 @@ void V4L2Camera::configure(int *ret, StreamConfiguration *streamConfigOut, LOG(V4L2Compat, Debug) << "Validated configuration is: " << streamConfig.toString(); - *ret = camera_->configure(config_.get()); - if (*ret < 0) - return; + int ret = camera_->configure(config_.get()); + if (ret < 0) + return ret; *streamConfigOut = config_->at(0); + + return 0; } -void V4L2Camera::mmap(void **ret, unsigned int index) +void *V4L2Camera::mmap(unsigned int index) { Stream *stream = *camera_->streams().begin(); - *ret = stream->buffers()[index].planes()[0].mem(); + return stream->buffers()[index].planes()[0].mem(); } -void V4L2Camera::allocBuffers(int *ret, unsigned int count) +int V4L2Camera::allocBuffers(unsigned int count) { - *ret = camera_->allocateBuffers(); - if (*ret == -EACCES) - *ret = -EBUSY; + int ret = camera_->allocateBuffers(); + return ret == -EACCES ? -EBUSY : ret; } void V4L2Camera::freeBuffers() @@ -140,85 +138,76 @@ void V4L2Camera::freeBuffers() camera_->freeBuffers(); } -void V4L2Camera::streamOn(int *ret) +int V4L2Camera::streamOn() { - *ret = 0; - if (isRunning_) - return; + return 0; + + int ret = camera_->start(); + if (ret < 0) + return ret == -EACCES ? -EBUSY : ret; - *ret = camera_->start(); - if (*ret < 0) { - if (*ret == -EACCES) - *ret = -EBUSY; - return; - } isRunning_ = true; for (std::unique_ptr<Request> &req : pendingRequests_) { /* \todo What should we do if this returns -EINVAL? */ - *ret = camera_->queueRequest(req.release()); - if (*ret < 0) { - if (*ret == -EACCES) - *ret = -EBUSY; - return; - } + ret = camera_->queueRequest(req.release()); + if (ret < 0) + return ret == -EACCES ? -EBUSY : ret; } pendingRequests_.clear(); + + return 0; } -void V4L2Camera::streamOff(int *ret) +int V4L2Camera::streamOff() { - *ret = 0; - /* \todo Restore buffers to reqbufs state? */ if (!isRunning_) - return; + return 0; + + int ret = camera_->stop(); + if (ret < 0) + return ret == -EACCES ? -EBUSY : ret; - *ret = camera_->stop(); - if (*ret < 0) { - if (*ret == -EACCES) - *ret = -EBUSY; - return; - } isRunning_ = false; + + return 0; } -void V4L2Camera::qbuf(int *ret, unsigned int index) +int V4L2Camera::qbuf(unsigned int index) { Stream *stream = config_->at(0).stream(); std::unique_ptr<Buffer> buffer = stream->createBuffer(index); if (!buffer) { LOG(V4L2Compat, Error) << "Can't create buffer"; - *ret = -ENOMEM; - return; + return -ENOMEM; } std::unique_ptr<Request> request = std::unique_ptr<Request>(camera_->createRequest()); if (!request) { LOG(V4L2Compat, Error) << "Can't create request"; - *ret = -ENOMEM; - return; + return -ENOMEM; } - *ret = request->addBuffer(std::move(buffer)); - if (*ret < 0) { + int ret = request->addBuffer(std::move(buffer)); + if (ret < 0) { LOG(V4L2Compat, Error) << "Can't set buffer for request"; - *ret = -ENOMEM; - return; + return -ENOMEM; } if (!isRunning_) { pendingRequests_.push_back(std::move(request)); - return; + return 0; } - *ret = camera_->queueRequest(request.release()); - if (*ret < 0) { + ret = camera_->queueRequest(request.release()); + if (ret < 0) { LOG(V4L2Compat, Error) << "Can't queue request"; - if (*ret == -EACCES) - *ret = -EBUSY; + return ret == -EACCES ? -EBUSY : ret; } + + return 0; } diff --git a/src/v4l2/v4l2_camera.h b/src/v4l2/v4l2_camera.h index d24dbca6aaf4..5a889efdb4a2 100644 --- a/src/v4l2/v4l2_camera.h +++ b/src/v4l2/v4l2_camera.h @@ -48,23 +48,23 @@ public: V4L2Camera(std::shared_ptr<Camera> camera); ~V4L2Camera(); - void open(int *ret); + int open(); void close(); void getStreamConfig(StreamConfiguration *streamConfig); std::vector<FrameMetadata> completedBuffers(); - void mmap(void **ret, unsigned int index); + void *mmap(unsigned int index); - void configure(int *ret, StreamConfiguration *streamConfigOut, - const Size &size, PixelFormat pixelformat, - unsigned int bufferCount); + int configure(StreamConfiguration *streamConfigOut, + const Size &size, PixelFormat pixelformat, + unsigned int bufferCount); - void allocBuffers(int *ret, unsigned int count); + int allocBuffers(unsigned int count); void freeBuffers(); - void streamOn(int *ret); - void streamOff(int *ret); + int streamOn(); + int streamOff(); - void qbuf(int *ret, unsigned int index); + int qbuf(unsigned int index); Semaphore bufferSema_; diff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp index 559caba69270..2eeb12396d90 100644 --- a/src/v4l2/v4l2_camera_proxy.cpp +++ b/src/v4l2/v4l2_camera_proxy.cpp @@ -40,9 +40,8 @@ int V4L2CameraProxy::open(bool nonBlocking) { LOG(V4L2Compat, Debug) << "Servicing open"; - int ret; - vcam_->invokeMethod(&V4L2Camera::open, ConnectionTypeBlocking, - &ret); + int ret = vcam_->invokeMethod(&V4L2Camera::open, + ConnectionTypeBlocking); if (ret < 0) { errno = -ret; return -1; @@ -91,9 +90,8 @@ void *V4L2CameraProxy::mmap(size_t length, int prot, int flags, off_t offset) return MAP_FAILED; } - void *val; - vcam_->invokeMethod(&V4L2Camera::mmap, ConnectionTypeBlocking, - &val, index); + void *val = vcam_->invokeMethod(&V4L2Camera::mmap, + ConnectionTypeBlocking, index); buffers_[index].flags |= V4L2_BUF_FLAG_MAPPED; mmaps_[val] = index; @@ -245,9 +243,11 @@ int V4L2CameraProxy::vidioc_s_fmt(struct v4l2_format *arg) return ret; Size size(arg->fmt.pix.width, arg->fmt.pix.height); - vcam_->invokeMethod(&V4L2Camera::configure, ConnectionTypeBlocking, - &ret, &streamConfig_, size, - v4l2ToDrm(arg->fmt.pix.pixelformat), bufferCount_); + ret = vcam_->invokeMethod(&V4L2Camera::configure, + ConnectionTypeBlocking, + &streamConfig_, size, + v4l2ToDrm(arg->fmt.pix.pixelformat), + bufferCount_); if (ret < 0) return -EINVAL; @@ -297,9 +297,8 @@ int V4L2CameraProxy::freeBuffers() { LOG(V4L2Compat, Debug) << "Freeing libcamera bufs"; - int ret; - vcam_->invokeMethod(&V4L2Camera::streamOff, - ConnectionTypeBlocking, &ret); + int ret = vcam_->invokeMethod(&V4L2Camera::streamOff, + ConnectionTypeBlocking); if (ret < 0) { LOG(V4L2Compat, Error) << "Failed to stop stream"; return ret; @@ -327,10 +326,11 @@ int V4L2CameraProxy::vidioc_reqbufs(struct v4l2_requestbuffers *arg) return freeBuffers(); Size size(curV4L2Format_.fmt.pix.width, curV4L2Format_.fmt.pix.height); - vcam_->invokeMethod(&V4L2Camera::configure, ConnectionTypeBlocking, - &ret, &streamConfig_, size, - v4l2ToDrm(curV4L2Format_.fmt.pix.pixelformat), - arg->count); + ret = vcam_->invokeMethod(&V4L2Camera::configure, + ConnectionTypeBlocking, + &streamConfig_, size, + v4l2ToDrm(curV4L2Format_.fmt.pix.pixelformat), + arg->count); if (ret < 0) return -EINVAL; @@ -343,8 +343,8 @@ int V4L2CameraProxy::vidioc_reqbufs(struct v4l2_requestbuffers *arg) arg->count = streamConfig_.bufferCount; bufferCount_ = arg->count; - vcam_->invokeMethod(&V4L2Camera::allocBuffers, - ConnectionTypeBlocking, &ret, arg->count); + ret = vcam_->invokeMethod(&V4L2Camera::allocBuffers, + ConnectionTypeBlocking, arg->count); if (ret < 0) { arg->count = 0; return ret; @@ -392,9 +392,8 @@ int V4L2CameraProxy::vidioc_qbuf(struct v4l2_buffer *arg) arg->index >= bufferCount_) return -EINVAL; - int ret; - vcam_->invokeMethod(&V4L2Camera::qbuf, ConnectionTypeBlocking, - &ret, arg->index); + int ret = vcam_->invokeMethod(&V4L2Camera::qbuf, ConnectionTypeBlocking, + arg->index); if (ret < 0) return ret; @@ -437,9 +436,8 @@ int V4L2CameraProxy::vidioc_streamon(int *arg) if (!validateBufferType(*arg)) return -EINVAL; - int ret; - vcam_->invokeMethod(&V4L2Camera::streamOn, - ConnectionTypeBlocking, &ret); + int ret = vcam_->invokeMethod(&V4L2Camera::streamOn, + ConnectionTypeBlocking); return ret; } @@ -451,9 +449,8 @@ int V4L2CameraProxy::vidioc_streamoff(int *arg) if (!validateBufferType(*arg)) return -EINVAL; - int ret; - vcam_->invokeMethod(&V4L2Camera::streamOff, - ConnectionTypeBlocking, &ret); + int ret = vcam_->invokeMethod(&V4L2Camera::streamOff, + ConnectionTypeBlocking); for (struct v4l2_buffer &buf : buffers_) buf.flags &= ~(V4L2_BUF_FLAG_QUEUED | V4L2_BUF_FLAG_DONE);
Now that Object::invokeMethod() supports returning a value, use it and drop the return value method argument. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> --- src/v4l2/v4l2_camera.cpp | 109 +++++++++++++++------------------ src/v4l2/v4l2_camera.h | 18 +++--- src/v4l2/v4l2_camera_proxy.cpp | 51 ++++++++------- 3 files changed, 82 insertions(+), 96 deletions(-)