diff options
-rw-r--r-- | include/libcamera/camera.h | 1 | ||||
-rw-r--r-- | src/libcamera/camera.cpp | 22 |
2 files changed, 19 insertions, 4 deletions
diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h index bbe2696e..36bf1cbb 100644 --- a/include/libcamera/camera.h +++ b/include/libcamera/camera.h @@ -50,6 +50,7 @@ private: friend class PipelineHandler; void disconnect(); + int exclusiveAccess(); std::shared_ptr<PipelineHandler> pipe_; std::string name_; 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 */ |