libcamera: pipeline_handler: Return unique_ptr from generateConfiguration()
The PipelineHandler::generateConfiguration() function allocates a CameraConfiguration instance and returns it. The ownership of the instance is transferred to the caller. This is a perfect match for a std::unique_ptr<>, which the Camera::generateConfiguration() function already returns. Update PipelineHandler::generateConfiguration() to match it. This fixes a memory leak in one of the error return paths in the IPU3 pipeline handler. While at it, update the Camera::generateConfiguration() function documentation to drop the sentence that describes the ownership transfer, as that is implied by usage of std::unique_ptr<>. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
@@ -84,7 +84,7 @@ class PipelineHandlerVimc : public PipelineHandler
|
||||
public:
|
||||
PipelineHandlerVimc(CameraManager *manager);
|
||||
|
||||
CameraConfiguration *generateConfiguration(Camera *camera,
|
||||
std::unique_ptr<CameraConfiguration> generateConfiguration(Camera *camera,
|
||||
const StreamRoles &roles) override;
|
||||
int configure(Camera *camera, CameraConfiguration *config) override;
|
||||
|
||||
@@ -189,11 +189,13 @@ PipelineHandlerVimc::PipelineHandlerVimc(CameraManager *manager)
|
||||
{
|
||||
}
|
||||
|
||||
CameraConfiguration *PipelineHandlerVimc::generateConfiguration(Camera *camera,
|
||||
std::unique_ptr<CameraConfiguration>
|
||||
PipelineHandlerVimc::generateConfiguration(Camera *camera,
|
||||
const StreamRoles &roles)
|
||||
{
|
||||
VimcCameraData *data = cameraData(camera);
|
||||
CameraConfiguration *config = new VimcCameraConfiguration(data);
|
||||
std::unique_ptr<CameraConfiguration> config =
|
||||
std::make_unique<VimcCameraConfiguration>(data);
|
||||
|
||||
if (roles.empty())
|
||||
return config;
|
||||
|
||||
Reference in New Issue
Block a user