libcamera: camera: Add helper to check for exclusive access

Some operations on the camera requires the application to have exclusive
access to the camera. To help check for this in these operations add a
helper.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Niklas Söderlund
2019-02-05 13:42:14 +01:00
committed by Laurent Pinchart
parent 5239f6e656
commit 31bb25ae8d
2 changed files with 19 additions and 4 deletions

View File

@@ -50,6 +50,7 @@ private:
friend class PipelineHandler;
void disconnect();
int exclusiveAccess();
std::shared_ptr<PipelineHandler> pipe_;
std::string name_;

View File

@@ -240,6 +240,23 @@ Camera::streamConfiguration(std::vector<Stream *> &streams)
* \retval -EINVAL The configuration is not valid
*/
int Camera::configureStreams(std::map<Stream *, StreamConfiguration> &config)
{
int ret;
ret = exclusiveAccess();
if (ret)
return ret;
if (!config.size()) {
LOG(Camera, Error)
<< "Can't configure streams without a configuration";
return -EINVAL;
}
return pipe_->configureStreams(this, config);
}
int Camera::exclusiveAccess()
{
if (disconnected_)
return -ENODEV;
@@ -247,10 +264,7 @@ int Camera::configureStreams(std::map<Stream *, StreamConfiguration> &config)
if (!acquired_)
return -EACCES;
if (!config.size())
return -EINVAL;
return pipe_->configureStreams(this, config);
return 0;
}
} /* namespace libcamera */