Message ID | 20201212185116.29611-3-laurent.pinchart@ideasonboard.com |
---|---|
State | Accepted |
Delegated to: | Laurent Pinchart |
Headers | show |
Series |
|
Related | show |
Hi Laurent, On Sat, Dec 12, 2020 at 08:51:15PM +0200, Laurent Pinchart wrote: > Replace manual construction of V4L2VideoDevice and V4L2Subdevide with > the fromEntityName() helper where possible. The returned pointer is > managed as a std::unique_ptr<>, which simplifies the VimcCameraData > destructor. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> > --- > src/libcamera/pipeline/vimc/vimc.cpp | 24 +++++++++--------------- > 1 file changed, 9 insertions(+), 15 deletions(-) > > diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp > index 2a5054a8b1b8..72256f5b4190 100644 > --- a/src/libcamera/pipeline/vimc/vimc.cpp > +++ b/src/libcamera/pipeline/vimc/vimc.cpp > @@ -42,19 +42,13 @@ class VimcCameraData : public CameraData > { > public: > VimcCameraData(PipelineHandler *pipe, MediaDevice *media) > - : CameraData(pipe), media_(media), sensor_(nullptr), > - debayer_(nullptr), scaler_(nullptr), video_(nullptr), > - raw_(nullptr) > + : CameraData(pipe), media_(media), sensor_(nullptr) > { > } > > ~VimcCameraData() > { > delete sensor_; > - delete debayer_; > - delete scaler_; > - delete video_; > - delete raw_; > } > > int init(); > @@ -62,10 +56,10 @@ public: > > MediaDevice *media_; > CameraSensor *sensor_; > - V4L2Subdevice *debayer_; > - V4L2Subdevice *scaler_; > - V4L2VideoDevice *video_; > - V4L2VideoDevice *raw_; > + std::unique_ptr<V4L2Subdevice> debayer_; > + std::unique_ptr<V4L2Subdevice> scaler_; > + std::unique_ptr<V4L2VideoDevice> video_; > + std::unique_ptr<V4L2VideoDevice> raw_; > Stream stream_; > }; > > @@ -472,21 +466,21 @@ int VimcCameraData::init() > if (ret) > return ret; > > - debayer_ = new V4L2Subdevice(media_->getEntityByName("Debayer B")); > + debayer_ = V4L2Subdevice::fromEntityName(media_, "Debayer B"); > if (debayer_->open()) > return -ENODEV; > > - scaler_ = new V4L2Subdevice(media_->getEntityByName("Scaler")); > + scaler_ = V4L2Subdevice::fromEntityName(media_, "Scaler"); > if (scaler_->open()) > return -ENODEV; > > - video_ = new V4L2VideoDevice(media_->getEntityByName("RGB/YUV Capture")); > + video_ = V4L2VideoDevice::fromEntityName(media_, "RGB/YUV Capture"); > if (video_->open()) > return -ENODEV; > > video_->bufferReady.connect(this, &VimcCameraData::bufferReady); > > - raw_ = new V4L2VideoDevice(media_->getEntityByName("Raw Capture 1")); > + raw_ = V4L2VideoDevice::fromEntityName(media_, "Raw Capture 1"); > if (raw_->open()) > return -ENODEV; > > -- > Regards, > > Laurent Pinchart > > _______________________________________________ > libcamera-devel mailing list > libcamera-devel@lists.libcamera.org > https://lists.libcamera.org/listinfo/libcamera-devel
diff --git a/src/libcamera/pipeline/vimc/vimc.cpp b/src/libcamera/pipeline/vimc/vimc.cpp index 2a5054a8b1b8..72256f5b4190 100644 --- a/src/libcamera/pipeline/vimc/vimc.cpp +++ b/src/libcamera/pipeline/vimc/vimc.cpp @@ -42,19 +42,13 @@ class VimcCameraData : public CameraData { public: VimcCameraData(PipelineHandler *pipe, MediaDevice *media) - : CameraData(pipe), media_(media), sensor_(nullptr), - debayer_(nullptr), scaler_(nullptr), video_(nullptr), - raw_(nullptr) + : CameraData(pipe), media_(media), sensor_(nullptr) { } ~VimcCameraData() { delete sensor_; - delete debayer_; - delete scaler_; - delete video_; - delete raw_; } int init(); @@ -62,10 +56,10 @@ public: MediaDevice *media_; CameraSensor *sensor_; - V4L2Subdevice *debayer_; - V4L2Subdevice *scaler_; - V4L2VideoDevice *video_; - V4L2VideoDevice *raw_; + std::unique_ptr<V4L2Subdevice> debayer_; + std::unique_ptr<V4L2Subdevice> scaler_; + std::unique_ptr<V4L2VideoDevice> video_; + std::unique_ptr<V4L2VideoDevice> raw_; Stream stream_; }; @@ -472,21 +466,21 @@ int VimcCameraData::init() if (ret) return ret; - debayer_ = new V4L2Subdevice(media_->getEntityByName("Debayer B")); + debayer_ = V4L2Subdevice::fromEntityName(media_, "Debayer B"); if (debayer_->open()) return -ENODEV; - scaler_ = new V4L2Subdevice(media_->getEntityByName("Scaler")); + scaler_ = V4L2Subdevice::fromEntityName(media_, "Scaler"); if (scaler_->open()) return -ENODEV; - video_ = new V4L2VideoDevice(media_->getEntityByName("RGB/YUV Capture")); + video_ = V4L2VideoDevice::fromEntityName(media_, "RGB/YUV Capture"); if (video_->open()) return -ENODEV; video_->bufferReady.connect(this, &VimcCameraData::bufferReady); - raw_ = new V4L2VideoDevice(media_->getEntityByName("Raw Capture 1")); + raw_ = V4L2VideoDevice::fromEntityName(media_, "Raw Capture 1"); if (raw_->open()) return -ENODEV;
Replace manual construction of V4L2VideoDevice and V4L2Subdevide with the fromEntityName() helper where possible. The returned pointer is managed as a std::unique_ptr<>, which simplifies the VimcCameraData destructor. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> --- src/libcamera/pipeline/vimc/vimc.cpp | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-)