diff options
author | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2019-01-22 16:31:39 +0100 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2019-01-24 22:24:11 +0200 |
commit | 5b02e03199b79165086135236d8fb9b2c673aae1 (patch) | |
tree | 84fe12868edf1c9a50d19a96455138975cb751af /include | |
parent | a29b7fc7d5b3cca3738728961cb2f5c9600cc960 (diff) |
libcamera: camera: Associate cameras with their pipeline handler
The PipelineHandler which creates a Camera is responsible for serving
any operation requested by the user. In order forward the public API
calls, the camera needs to store a reference to its pipeline handler.
Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
Changes since v1:
- Create pipeline handlers is shared pointers, make them inherit from
std::enable_shared_from_this<> and stored them in shared pointers.
Diffstat (limited to 'include')
-rw-r--r-- | include/libcamera/camera.h | 8 | ||||
-rw-r--r-- | include/libcamera/camera_manager.h | 2 |
2 files changed, 7 insertions, 3 deletions
diff --git a/include/libcamera/camera.h b/include/libcamera/camera.h index 2ea1a688..efafb9e2 100644 --- a/include/libcamera/camera.h +++ b/include/libcamera/camera.h @@ -12,10 +12,13 @@ namespace libcamera { +class PipelineHandler; + class Camera final { public: - static std::shared_ptr<Camera> create(const std::string &name); + static std::shared_ptr<Camera> create(PipelineHandler *pipe, + const std::string &name); Camera(const Camera &) = delete; void operator=(const Camera &) = delete; @@ -23,9 +26,10 @@ public: const std::string &name() const; private: - explicit Camera(const std::string &name); + Camera(PipelineHandler *pipe, const std::string &name); ~Camera(); + std::shared_ptr<PipelineHandler> pipe_; std::string name_; }; diff --git a/include/libcamera/camera_manager.h b/include/libcamera/camera_manager.h index 9ade29d7..45e72df0 100644 --- a/include/libcamera/camera_manager.h +++ b/include/libcamera/camera_manager.h @@ -41,7 +41,7 @@ private: ~CameraManager(); std::unique_ptr<DeviceEnumerator> enumerator_; - std::vector<PipelineHandler *> pipes_; + std::vector<std::shared_ptr<PipelineHandler>> pipes_; std::vector<std::shared_ptr<Camera>> cameras_; std::unique_ptr<EventDispatcher> dispatcher_; |