libcamera: request: remove prepare()

The association of buffers to a request can be done directly in
addBuffer() instead of when the request is queued to the camera. Keep
the check that a request contains buffers by moving it to
Camera::queueRequest() where prepare() was previously called.

As a bonus we can remove a friend statement in Request.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Niklas Söderlund
2020-01-12 16:10:37 +01:00
parent 96eaad1238
commit 856a4a2527
4 changed files with 9 additions and 34 deletions
+2 -24
View File
@@ -139,6 +139,8 @@ int Request::addBuffer(std::unique_ptr<Buffer> buffer)
return -EEXIST;
}
buffer->setRequest(this);
pending_.insert(buffer.get());
bufferMap_[stream] = buffer.release();
return 0;
@@ -203,30 +205,6 @@ Buffer *Request::findBuffer(Stream *stream) const
* otherwise
*/
/**
* \brief Validate the request and prepare it for the completion handler
*
* Requests that contain no buffers are invalid and are rejected.
*
* \return 0 on success or a negative error code otherwise
* \retval -EINVAL The request is invalid
*/
int Request::prepare()
{
if (bufferMap_.empty()) {
LOG(Request, Error) << "Invalid request due to missing buffers";
return -EINVAL;
}
for (auto const &pair : bufferMap_) {
Buffer *buffer = pair.second;
buffer->setRequest(this);
pending_.insert(buffer);
}
return 0;
}
/**
* \brief Complete a queued request
*