cam: camera_session: Use std::unique_ptr<> to manage class members

Store the BufferWriter and FrameBufferAllocator pointers in
std::unique_ptr<> instances to simplify memory management and avoid
leaks.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Laurent Pinchart 2021-07-05 07:19:00 +03:00
parent 4cd0f586fb
commit 24ca846a27
2 changed files with 9 additions and 11 deletions

View file

@ -20,9 +20,8 @@ using namespace libcamera;
CameraSession::CameraSession(std::shared_ptr<Camera> camera,
CameraConfiguration *config)
: camera_(camera), config_(config), writer_(nullptr), last_(0),
queueCount_(0), captureCount_(0), captureLimit_(0),
printMetadata_(false), allocator_(nullptr)
: camera_(camera), config_(config), last_(0), queueCount_(0),
captureCount_(0), captureLimit_(0), printMetadata_(false)
{
}
@ -56,12 +55,12 @@ int CameraSession::start(const OptionsParser::Options &options)
if (options.isSet(OptFile)) {
if (!options[OptFile].toString().empty())
writer_ = new BufferWriter(options[OptFile]);
writer_ = std::make_unique<BufferWriter>(options[OptFile]);
else
writer_ = new BufferWriter();
writer_ = std::make_unique<BufferWriter>();
}
allocator_ = new FrameBufferAllocator(camera_);
allocator_ = std::make_unique<FrameBufferAllocator>(camera_);
return startCapture();
}
@ -72,12 +71,11 @@ void CameraSession::stop()
if (ret)
std::cout << "Failed to stop capture" << std::endl;
delete writer_;
writer_ = nullptr;
writer_.reset();
requests_.clear();
delete allocator_;
allocator_.reset();
}
int CameraSession::startCapture()