libcamera: camera: Validate Request before queueing it

Extend the Request::prepare() operation to validate the request before
preparing it. Return an error if the request is invalid, which for now
is limited to ensuring that the request contains at least one buffer.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Jacopo Mondi
2019-04-18 15:36:37 +02:00
parent 571d16b539
commit e671485989
2 changed files with 19 additions and 4 deletions
+11 -1
View File
@@ -115,10 +115,20 @@ Buffer *Request::findBuffer(Stream *stream) const
*/
/**
* \brief Prepare the resources for the completion handler
* \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;
pending_.insert(buffer);