libcamera: framebuffer: Move remaining private data to Private class

Private members of the FrameBuffer class are split between FrameBuffer
and FrameBuffer::Private. There was no real justification for this
split, and keeping some members private in the FrameBuffer class causes
multiple issues:

- Future modifications of the FrameBuffer class without breaking the ABI
  may be more difficult.
- Mutable access to members that should not be modified by applications
  require a friend statement, or going through the Private class.

Move all remaining private members to the Private class to address the
first issue, and add a Private::metadata() function to address the
second problem.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
Reviewed-by: Umang Jain <umang.jain@ideasonboard.com>
Tested-by: Naushir Patuck <naush@raspberrypi.com>
This commit is contained in:
Laurent Pinchart 2022-10-02 02:21:16 +03:00
parent e0e54965df
commit c20d3f5575
6 changed files with 71 additions and 53 deletions

View file

@ -59,28 +59,19 @@ 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);
FrameBuffer(std::unique_ptr<Private> d);
const std::vector<Plane> &planes() const { return planes_; }
const std::vector<Plane> &planes() const;
Request *request() const;
const FrameMetadata &metadata() const { return metadata_; }
const FrameMetadata &metadata() const;
uint64_t cookie() const { return cookie_; }
void setCookie(uint64_t cookie) { cookie_ = cookie; }
uint64_t cookie() const;
void setCookie(uint64_t cookie);
std::unique_ptr<Fence> releaseFence();
private:
LIBCAMERA_DISABLE_COPY_AND_MOVE(FrameBuffer)
friend class V4L2VideoDevice; /* Needed to update metadata_. */
std::vector<Plane> planes_;
FrameMetadata metadata_;
uint64_t cookie_;
};
} /* namespace libcamera */