summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorNiklas Söderlund <niklas.soderlund@ragnatech.se>2019-01-22 16:31:39 +0100
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2019-01-24 22:24:11 +0200
commit5b02e03199b79165086135236d8fb9b2c673aae1 (patch)
tree84fe12868edf1c9a50d19a96455138975cb751af /include
parenta29b7fc7d5b3cca3738728961cb2f5c9600cc960 (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.h8
-rw-r--r--include/libcamera/camera_manager.h2
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_;