summaryrefslogtreecommitdiff
path: root/src/libcamera/camera.cpp
diff options
context:
space:
mode:
authorNiklas Söderlund <niklas.soderlund@ragnatech.se>2019-02-05 13:42:14 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-02-06 07:41:51 +0200
commit31bb25ae8d6dc669dddabf47d18c517ce9070578 (patch)
tree8927e71cf2d2f40a9a57c847ab97e03747495ea3 /src/libcamera/camera.cpp
parent5239f6e656d77bdbc66a93714b5a0b31a879c0cc (diff)
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>
Diffstat (limited to 'src/libcamera/camera.cpp')
-rw-r--r--src/libcamera/camera.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
index e8dab6f0..62291d2c 100644
--- a/src/libcamera/camera.cpp
+++ b/src/libcamera/camera.cpp
@@ -241,16 +241,30 @@ Camera::streamConfiguration(std::vector<Stream *> &streams)
*/
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;
if (!acquired_)
return -EACCES;
- if (!config.size())
- return -EINVAL;
-
- return pipe_->configureStreams(this, config);
+ return 0;
}
} /* namespace libcamera */