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 01:10:51 +01:00
parent 96eaad1238
commit 856a4a2527
4 changed files with 9 additions and 34 deletions

View File

@@ -810,6 +810,11 @@ int Camera::queueRequest(Request *request)
if (!stateIs(CameraRunning))
return -EACCES;
if (request->buffers().empty()) {
LOG(Camera, Error) << "Request contains no buffers";
return -EINVAL;
}
for (auto const &it : request->buffers()) {
Stream *stream = it.first;
Buffer *buffer = it.second;
@@ -832,12 +837,6 @@ int Camera::queueRequest(Request *request)
buffer->mem_ = &stream->buffers()[buffer->index_];
}
int ret = request->prepare();
if (ret) {
LOG(Camera, Error) << "Failed to prepare request";
return ret;
}
return pipe_->queueRequest(this, request);
}