android: CameraDevice: Manage requestTemplates_ with std::unique_ptr
CameraMetadata stored in requestTemplates_ in CameraDevice is not necessary to be a raw pointer. This reduces the manual new/delete code by changing the type to 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:
parent
dca709c44a
commit
f101cc6878
2 changed files with 11 additions and 17 deletions
|
@ -338,11 +338,7 @@ CameraDevice::CameraDevice(unsigned int id, std::shared_ptr<Camera> camera)
|
|||
}
|
||||
}
|
||||
|
||||
CameraDevice::~CameraDevice()
|
||||
{
|
||||
for (auto &it : requestTemplates_)
|
||||
delete it.second;
|
||||
}
|
||||
CameraDevice::~CameraDevice() = default;
|
||||
|
||||
std::unique_ptr<CameraDevice> CameraDevice::create(unsigned int id,
|
||||
std::shared_ptr<Camera> cam)
|
||||
|
@ -1358,15 +1354,14 @@ const camera_metadata_t *CameraDevice::getStaticMetadata()
|
|||
return staticMetadata_->get();
|
||||
}
|
||||
|
||||
CameraMetadata *CameraDevice::requestTemplatePreview()
|
||||
std::unique_ptr<CameraMetadata> CameraDevice::requestTemplatePreview()
|
||||
{
|
||||
/*
|
||||
* \todo Keep this in sync with the actual number of entries.
|
||||
* Currently: 20 entries, 35 bytes
|
||||
*/
|
||||
CameraMetadata *requestTemplate = new CameraMetadata(21, 36);
|
||||
auto requestTemplate = std::make_unique<CameraMetadata>(21, 36);
|
||||
if (!requestTemplate->isValid()) {
|
||||
delete requestTemplate;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -1454,9 +1449,9 @@ CameraMetadata *CameraDevice::requestTemplatePreview()
|
|||
return requestTemplate;
|
||||
}
|
||||
|
||||
CameraMetadata *CameraDevice::requestTemplateVideo()
|
||||
std::unique_ptr<CameraMetadata> CameraDevice::requestTemplateVideo()
|
||||
{
|
||||
CameraMetadata *previewTemplate = requestTemplatePreview();
|
||||
std::unique_ptr<CameraMetadata> previewTemplate = requestTemplatePreview();
|
||||
if (!previewTemplate)
|
||||
return nullptr;
|
||||
|
||||
|
@ -1488,7 +1483,7 @@ const camera_metadata_t *CameraDevice::constructDefaultRequestSettings(int type)
|
|||
return it->second->get();
|
||||
|
||||
/* Use the capture intent matching the requested template type. */
|
||||
CameraMetadata *requestTemplate;
|
||||
std::unique_ptr<CameraMetadata> requestTemplate;
|
||||
uint8_t captureIntent;
|
||||
switch (type) {
|
||||
case CAMERA3_TEMPLATE_PREVIEW:
|
||||
|
@ -1521,15 +1516,14 @@ const camera_metadata_t *CameraDevice::constructDefaultRequestSettings(int type)
|
|||
|
||||
if (!requestTemplate || !requestTemplate->isValid()) {
|
||||
LOG(HAL, Error) << "Failed to construct request template";
|
||||
delete requestTemplate;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
requestTemplate->updateEntry(ANDROID_CONTROL_CAPTURE_INTENT,
|
||||
&captureIntent, 1);
|
||||
|
||||
requestTemplates_[type] = requestTemplate;
|
||||
return requestTemplate->get();
|
||||
requestTemplates_[type] = std::move(requestTemplate);
|
||||
return requestTemplates_[type]->get();
|
||||
}
|
||||
|
||||
PixelFormat CameraDevice::toPixelFormat(int format) const
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue