mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-20 02:45:08 +03:00
cam: Use std::unique_ptr<> to manage CameraManager
Store the CameraManager instance in a unique_ptr 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:
parent
8519df23a9
commit
033cac7f6d
1 changed files with 3 additions and 10 deletions
|
@ -25,7 +25,6 @@ class CamApp
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CamApp();
|
CamApp();
|
||||||
~CamApp();
|
|
||||||
|
|
||||||
static CamApp *instance();
|
static CamApp *instance();
|
||||||
|
|
||||||
|
@ -49,8 +48,8 @@ private:
|
||||||
|
|
||||||
static CamApp *app_;
|
static CamApp *app_;
|
||||||
OptionsParser::Options options_;
|
OptionsParser::Options options_;
|
||||||
CameraManager *cm_;
|
|
||||||
|
|
||||||
|
std::unique_ptr<CameraManager> cm_;
|
||||||
std::unique_ptr<CameraSession> session_;
|
std::unique_ptr<CameraSession> session_;
|
||||||
|
|
||||||
EventLoop loop_;
|
EventLoop loop_;
|
||||||
|
@ -59,16 +58,10 @@ private:
|
||||||
CamApp *CamApp::app_ = nullptr;
|
CamApp *CamApp::app_ = nullptr;
|
||||||
|
|
||||||
CamApp::CamApp()
|
CamApp::CamApp()
|
||||||
: cm_(nullptr)
|
|
||||||
{
|
{
|
||||||
CamApp::app_ = this;
|
CamApp::app_ = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
CamApp::~CamApp()
|
|
||||||
{
|
|
||||||
delete cm_;
|
|
||||||
}
|
|
||||||
|
|
||||||
CamApp *CamApp::instance()
|
CamApp *CamApp::instance()
|
||||||
{
|
{
|
||||||
return CamApp::app_;
|
return CamApp::app_;
|
||||||
|
@ -82,7 +75,7 @@ int CamApp::init(int argc, char **argv)
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
cm_ = new CameraManager();
|
cm_ = std::make_unique<CameraManager>();
|
||||||
|
|
||||||
ret = cm_->start();
|
ret = cm_->start();
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -92,7 +85,7 @@ int CamApp::init(int argc, char **argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options_.isSet(OptCamera)) {
|
if (options_.isSet(OptCamera)) {
|
||||||
session_ = std::make_unique<CameraSession>(cm_, options_);
|
session_ = std::make_unique<CameraSession>(cm_.get(), options_);
|
||||||
if (!session_->isValid()) {
|
if (!session_->isValid()) {
|
||||||
std::cout << "Failed to create camera session" << std::endl;
|
std::cout << "Failed to create camera session" << std::endl;
|
||||||
cleanup();
|
cleanup();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue