libcamera: camera: Pass Private pointer to Camera constructor

In order to allow subclassing Camera::Private in pipeline handlers, pass
the pointer to the private data to the Camera constructor, and to the
Camera::createCamera() function.

The Camera::Private id_ and streams_ members now need to be initialized
by the Camera constructor instead of the Camera::Private constructor, to
allow storage of the streams in a pipeline handler-specific subclass of
Camera::Private.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Laurent Pinchart 2021-07-23 02:57:44 +03:00
parent e77c8951e9
commit 32b8832e38
9 changed files with 38 additions and 20 deletions

View file

@ -78,7 +78,7 @@ class Camera final : public Object, public std::enable_shared_from_this<Camera>,
LIBCAMERA_DECLARE_PRIVATE()
public:
static std::shared_ptr<Camera> create(PipelineHandler *pipe,
static std::shared_ptr<Camera> create(std::unique_ptr<Private> d,
const std::string &id,
const std::set<Stream *> &streams);
@ -107,7 +107,7 @@ public:
private:
LIBCAMERA_DISABLE_COPY(Camera)
Camera(PipelineHandler *pipe, const std::string &id,
Camera(std::unique_ptr<Private> d, const std::string &id,
const std::set<Stream *> &streams);
~Camera();

View file

@ -26,8 +26,7 @@ class Camera::Private : public Extensible::Private
LIBCAMERA_DECLARE_PUBLIC(Camera)
public:
Private(PipelineHandler *pipe, const std::string &id,
const std::set<Stream *> &streams);
Private(PipelineHandler *pipe);
~Private();
private: