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>
This commit is contained in:
Jacopo Mondi 2019-01-25 17:59:29 +01:00
parent ebc4cab862
commit 4f32a3b408

View file

@ -210,18 +210,16 @@ void PipelineHandlerIPU3::registerCameras()
* registered. The 'camera' shared pointer goes out of scope * registered. The 'camera' shared pointer goes out of scope
* and deletes the Camera it manages. * and deletes the Camera it manages.
*/ */
V4L2Device *videoDev = createVideoDevice(id); std::unique_ptr<IPU3CameraData> data = utils::make_unique<IPU3CameraData>();
if (!videoDev) { data->dev_ = createVideoDevice(id);
if (!data->dev_) {
LOG(IPU3, Error) LOG(IPU3, Error)
<< "Failed to register camera[" << "Failed to register camera["
<< numCameras << "] \"" << cameraName << "\""; << numCameras << "] \"" << cameraName << "\"";
continue; continue;
} }
IPU3CameraData *data = new IPU3CameraData(); setCameraData(camera.get(), std::move(data));
data->dev_ = videoDev;
setCameraData(camera.get(),
std::move(std::unique_ptr<IPU3CameraData>(data)));
registerCamera(std::move(camera)); registerCamera(std::move(camera));
LOG(IPU3, Info) LOG(IPU3, Info)