From 4f32a3b408430f9bbbac260e8aedd1b90244639d Mon Sep 17 00:00:00 2001
From: Jacopo Mondi <jacopo@jmondi.org>
Date: Fri, 25 Jan 2019 17:59:29 +0100
Subject: libcamera: ipu3: Re-work camera data registration

Re-work camera data registration to create the cameraData pointer as
unique_ptr<> and make clear its ownership model.

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
---
 src/libcamera/pipeline/ipu3/ipu3.cpp | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/src/libcamera/pipeline/ipu3/ipu3.cpp b/src/libcamera/pipeline/ipu3/ipu3.cpp
index 64f639fc..80f4a7bf 100644
--- a/src/libcamera/pipeline/ipu3/ipu3.cpp
+++ b/src/libcamera/pipeline/ipu3/ipu3.cpp
@@ -210,18 +210,16 @@ void PipelineHandlerIPU3::registerCameras()
 		 * registered. The 'camera' shared pointer goes out of scope
 		 * and deletes the Camera it manages.
 		 */
-		V4L2Device *videoDev = createVideoDevice(id);
-		if (!videoDev) {
+		std::unique_ptr<IPU3CameraData> data = utils::make_unique<IPU3CameraData>();
+		data->dev_ = createVideoDevice(id);
+		if (!data->dev_) {
 			LOG(IPU3, Error)
 				<< "Failed to register camera["
 				<< numCameras << "] \"" << cameraName << "\"";
 			continue;
 		}
 
-		IPU3CameraData *data = new IPU3CameraData();
-		data->dev_ = videoDev;
-		setCameraData(camera.get(),
-			      std::move(std::unique_ptr<IPU3CameraData>(data)));
+		setCameraData(camera.get(), std::move(data));
 		registerCamera(std::move(camera));
 
 		LOG(IPU3, Info)
-- 
cgit v1.2.1