summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-07-05 07:19:00 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2021-07-22 17:13:44 +0300
commit24ca846a27d3b5f3e371dcd039df6ee74dd113c1 (patch)
tree8bd492fe96b28048ce13070547b4d5b2ea0d37db /src
parent4cd0f586fbc7bc8451bd18aaa3b59fbd8d53574e (diff)
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>
Diffstat (limited to 'src')
-rw-r--r--src/cam/camera_session.cpp16
-rw-r--r--src/cam/camera_session.h4
2 files changed, 9 insertions, 11 deletions
diff --git a/src/cam/camera_session.cpp b/src/cam/camera_session.cpp
index b1200e60..1fb7c1b6 100644
--- a/src/cam/camera_session.cpp
+++ b/src/cam/camera_session.cpp
@@ -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()
diff --git a/src/cam/camera_session.h b/src/cam/camera_session.h
index 5131cfd4..31e8d6db 100644
--- a/src/cam/camera_session.h
+++ b/src/cam/camera_session.h
@@ -44,7 +44,7 @@ private:
libcamera::CameraConfiguration *config_;
std::map<const libcamera::Stream *, std::string> streamName_;
- BufferWriter *writer_;
+ std::unique_ptr<BufferWriter> writer_;
uint64_t last_;
unsigned int queueCount_;
@@ -52,7 +52,7 @@ private:
unsigned int captureLimit_;
bool printMetadata_;
- libcamera::FrameBufferAllocator *allocator_;
+ std::unique_ptr<libcamera::FrameBufferAllocator> allocator_;
std::vector<std::unique_ptr<libcamera::Request>> requests_;
};