diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-12-09 13:13:38 +0200 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-12-14 15:46:04 +0200 |
commit | 3129fcae43ce139cb1e158cb5255428afb8952ec (patch) | |
tree | 84e902862aa325a95a40f7241b63e11add6bee0c /src/libcamera/pipeline/ipu3 | |
parent | 1c2b54a0173f5ad6d792617246439ec1823bab5a (diff) |
libcamera: pipeline: Manage resources with std::unique_ptr<>
Replace manual resource destruction with std::unique_ptr<> where
applicable. This removes the need for several destructors.
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Diffstat (limited to 'src/libcamera/pipeline/ipu3')
-rw-r--r-- | src/libcamera/pipeline/ipu3/cio2.cpp | 11 | ||||
-rw-r--r-- | src/libcamera/pipeline/ipu3/cio2.h | 9 |
2 files changed, 6 insertions, 14 deletions
diff --git a/src/libcamera/pipeline/ipu3/cio2.cpp b/src/libcamera/pipeline/ipu3/cio2.cpp index 821715e3..bd5260d5 100644 --- a/src/libcamera/pipeline/ipu3/cio2.cpp +++ b/src/libcamera/pipeline/ipu3/cio2.cpp @@ -33,16 +33,9 @@ const std::map<uint32_t, PixelFormat> mbusCodesToPixelFormat = { } /* namespace */ CIO2Device::CIO2Device() - : sensor_(nullptr), csi2_(nullptr) { } -CIO2Device::~CIO2Device() -{ - delete csi2_; - delete sensor_; -} - /** * \brief Retrieve the list of supported PixelFormats * @@ -117,7 +110,7 @@ int CIO2Device::init(const MediaDevice *media, unsigned int index) MediaLink *link = links[0]; MediaEntity *sensorEntity = link->source()->entity(); - sensor_ = new CameraSensor(sensorEntity); + sensor_ = std::make_unique<CameraSensor>(sensorEntity); ret = sensor_->init(); if (ret) return ret; @@ -148,7 +141,7 @@ int CIO2Device::init(const MediaDevice *media, unsigned int index) * might impact on power consumption. */ - csi2_ = new V4L2Subdevice(csi2Entity); + csi2_ = std::make_unique<V4L2Subdevice>(csi2Entity); ret = csi2_->open(); if (ret) return ret; diff --git a/src/libcamera/pipeline/ipu3/cio2.h b/src/libcamera/pipeline/ipu3/cio2.h index 0dca9673..236ad287 100644 --- a/src/libcamera/pipeline/ipu3/cio2.h +++ b/src/libcamera/pipeline/ipu3/cio2.h @@ -33,7 +33,6 @@ public: static constexpr unsigned int CIO2_BUFFER_COUNT = 4; CIO2Device(); - ~CIO2Device(); std::vector<PixelFormat> formats() const; std::vector<SizeRange> sizes() const; @@ -49,8 +48,8 @@ public: int start(); int stop(); - CameraSensor *sensor() { return sensor_; } - const CameraSensor *sensor() const { return sensor_; } + CameraSensor *sensor() { return sensor_.get(); } + const CameraSensor *sensor() const { return sensor_.get(); } int queueBuffer(Request *request, FrameBuffer *rawBuffer); void tryReturnBuffer(FrameBuffer *buffer); @@ -61,8 +60,8 @@ private: void cio2BufferReady(FrameBuffer *buffer); - CameraSensor *sensor_; - V4L2Subdevice *csi2_; + std::unique_ptr<CameraSensor> sensor_; + std::unique_ptr<V4L2Subdevice> csi2_; std::unique_ptr<V4L2VideoDevice> output_; std::vector<std::unique_ptr<FrameBuffer>> buffers_; |