libcamera: framebuffer_allocator: Lift camera restrictions on allocator

The Camera class currently requires the allocator to have no allocated
buffer before the camera is reconfigured, and the allocator to be
destroyed before the camera is released. There's no basis for these
restrictions anymore, remove them.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
Laurent Pinchart
2020-03-18 19:15:18 +02:00
parent 33fedea818
commit 4ff18e9506
10 changed files with 8 additions and 54 deletions
+1 -17
View File
@@ -508,7 +508,7 @@ const std::string &Camera::name() const
Camera::Camera(PipelineHandler *pipe, const std::string &name,
const std::set<Stream *> &streams)
: p_(new Private(pipe, name, streams)), allocator_(nullptr)
: p_(new Private(pipe, name, streams))
{
}
@@ -620,16 +620,6 @@ int Camera::release()
if (ret < 0)
return ret == -EACCES ? -EBUSY : ret;
if (allocator_) {
/*
* \todo Try to find a better API that would make this error
* impossible.
*/
LOG(Camera, Error)
<< "Buffers must be freed before the camera can be reconfigured";
return -EBUSY;
}
p_->pipe_->unlock();
p_->setState(Private::CameraAvailable);
@@ -763,12 +753,6 @@ int Camera::configure(CameraConfiguration *config)
if (ret < 0)
return ret;
if (allocator_ && allocator_->allocated()) {
LOG(Camera, Error)
<< "Allocator must be deleted before camera can be reconfigured";
return -EBUSY;
}
if (config->validate() != CameraConfiguration::Valid) {
LOG(Camera, Error)
<< "Can't configure camera with invalid configuration";