android: CameraHalManager: Hold CameraManager with std::unique_ptr

CameraManager is owned by CameraHalManager. The ownership of the
object is not shared with other classes. So CameraHalManager
should manage CameraManager with std::unique_ptr.

Signed-off-by: Hirokazu Honda <hiroh@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
Hirokazu Honda 2021-03-24 16:07:51 +09:00 committed by Laurent Pinchart
parent 212f410c7c
commit 10518882f3
2 changed files with 5 additions and 12 deletions

View file

@ -34,18 +34,12 @@ CameraHalManager::CameraHalManager()
{ {
} }
CameraHalManager::~CameraHalManager() /* CameraManager calls stop() in the destructor. */
{ CameraHalManager::~CameraHalManager() = default;
if (cameraManager_) {
cameraManager_->stop();
delete cameraManager_;
cameraManager_ = nullptr;
}
}
int CameraHalManager::init() int CameraHalManager::init()
{ {
cameraManager_ = new CameraManager(); cameraManager_ = std::make_unique<CameraManager>();
/* Support camera hotplug. */ /* Support camera hotplug. */
cameraManager_->cameraAdded.connect(this, &CameraHalManager::cameraAdded); cameraManager_->cameraAdded.connect(this, &CameraHalManager::cameraAdded);
@ -55,8 +49,7 @@ int CameraHalManager::init()
if (ret) { if (ret) {
LOG(HAL, Error) << "Failed to start camera manager: " LOG(HAL, Error) << "Failed to start camera manager: "
<< strerror(-ret); << strerror(-ret);
delete cameraManager_; cameraManager_.reset();
cameraManager_ = nullptr;
return ret; return ret;
} }

View file

@ -49,7 +49,7 @@ private:
CameraDevice *cameraDeviceFromHalId(unsigned int id); CameraDevice *cameraDeviceFromHalId(unsigned int id);
libcamera::CameraManager *cameraManager_; std::unique_ptr<libcamera::CameraManager> cameraManager_;
const camera_module_callbacks_t *callbacks_; const camera_module_callbacks_t *callbacks_;
std::vector<std::unique_ptr<CameraDevice>> cameras_; std::vector<std::unique_ptr<CameraDevice>> cameras_;