diff options
-rw-r--r-- | include/libcamera/framebuffer.h | 2 | ||||
-rw-r--r-- | include/libcamera/internal/framebuffer.h | 1 | ||||
-rw-r--r-- | src/libcamera/framebuffer.cpp | 24 |
3 files changed, 25 insertions, 2 deletions
diff --git a/include/libcamera/framebuffer.h b/include/libcamera/framebuffer.h index 357bbe18..502f7897 100644 --- a/include/libcamera/framebuffer.h +++ b/include/libcamera/framebuffer.h @@ -57,6 +57,8 @@ public: }; FrameBuffer(const std::vector<Plane> &planes, unsigned int cookie = 0); + FrameBuffer(std::unique_ptr<Private> d, + const std::vector<Plane> &planes, unsigned int cookie = 0); const std::vector<Plane> &planes() const { return planes_; } Request *request() const; diff --git a/include/libcamera/internal/framebuffer.h b/include/libcamera/internal/framebuffer.h index 908b4789..6e0d8389 100644 --- a/include/libcamera/internal/framebuffer.h +++ b/include/libcamera/internal/framebuffer.h @@ -19,6 +19,7 @@ class FrameBuffer::Private : public Extensible::Private public: Private(); + virtual ~Private(); void setRequest(Request *request) { request_ = request; } bool isContiguous() const { return isContiguous_; } diff --git a/src/libcamera/framebuffer.cpp b/src/libcamera/framebuffer.cpp index 8857049e..fcf60b4e 100644 --- a/src/libcamera/framebuffer.cpp +++ b/src/libcamera/framebuffer.cpp @@ -120,6 +120,13 @@ FrameBuffer::Private::Private() } /** + * \brief FrameBuffer::Private destructor + */ +FrameBuffer::Private::~Private() +{ +} + +/** * \fn FrameBuffer::Private::setRequest() * \brief Set the request this buffer belongs to * \param[in] request Request to set @@ -237,8 +244,21 @@ ino_t fileDescriptorInode(const SharedFD &fd) * \param[in] cookie Cookie */ FrameBuffer::FrameBuffer(const std::vector<Plane> &planes, unsigned int cookie) - : Extensible(std::make_unique<Private>()), planes_(planes), - cookie_(cookie) + : FrameBuffer(std::make_unique<Private>(), planes, cookie) +{ +} + +/** + * \brief Construct a FrameBuffer with an extensible private class and an array + * of planes + * \param[in] d The extensible private class + * \param[in] planes The frame memory planes + * \param[in] cookie Cookie + */ +FrameBuffer::FrameBuffer(std::unique_ptr<Private> d, + const std::vector<Plane> &planes, + unsigned int cookie) + : Extensible(std::move(d)), planes_(planes), cookie_(cookie) { metadata_.planes_.resize(planes_.size()); |