From 6b1f6115a8bdc825344bfdd5becd1bfb3f16d0f1 Mon Sep 17 00:00:00 2001 From: Yin-Chia Yeh Date: Wed, 28 Feb 2018 13:05:59 -0800 Subject: [PATCH] Camera: fix camera ID in flashlight control Bug: 72261912 Change-Id: If97579fd27737c7f3ffd0bf637d28f213343ffb1 --- .../libcameraservice/CameraFlashlight.cpp | 28 +++++++++---------- .../libcameraservice/CameraFlashlight.h | 2 -- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/services/camera/libcameraservice/CameraFlashlight.cpp b/services/camera/libcameraservice/CameraFlashlight.cpp index 394701aff4..471c77db8e 100644 --- a/services/camera/libcameraservice/CameraFlashlight.cpp +++ b/services/camera/libcameraservice/CameraFlashlight.cpp @@ -120,20 +120,15 @@ status_t CameraFlashlight::setTorchMode(const String8& cameraId, bool enabled) { return res; } -int CameraFlashlight::getNumberOfCameras() { - size_t len = mProviderManager->getAPI1CompatibleCameraDeviceIds().size(); - return static_cast(len); -} - status_t CameraFlashlight::findFlashUnits() { Mutex::Autolock l(mLock); status_t res; std::vector cameraIds; - int numberOfCameras = getNumberOfCameras(); + std::vector ids = mProviderManager->getAPI1CompatibleCameraDeviceIds(); + int numberOfCameras = static_cast(ids.size()); cameraIds.resize(numberOfCameras); // No module, must be provider - std::vector ids = mProviderManager->getAPI1CompatibleCameraDeviceIds(); for (size_t i = 0; i < cameraIds.size(); i++) { cameraIds[i] = String8(ids[i].c_str()); } @@ -187,7 +182,8 @@ bool CameraFlashlight::hasFlashUnitLocked(const String8& cameraId) { ssize_t index = mHasFlashlightMap.indexOfKey(cameraId); if (index == NAME_NOT_FOUND) { - ALOGE("%s: camera %s not present when findFlashUnits() was called", + // Might be external camera + ALOGW("%s: camera %s not present when findFlashUnits() was called", __FUNCTION__, cameraId.string()); return false; } @@ -221,11 +217,13 @@ status_t CameraFlashlight::prepareDeviceOpen(const String8& cameraId) { if (mOpenedCameraIds.size() == 0) { // notify torch unavailable for all cameras with a flash - int numCameras = getNumberOfCameras(); + std::vector ids = mProviderManager->getAPI1CompatibleCameraDeviceIds(); + int numCameras = static_cast(ids.size()); for (int i = 0; i < numCameras; i++) { - if (hasFlashUnitLocked(String8::format("%d", i))) { + String8 id8(ids[i].c_str()); + if (hasFlashUnitLocked(id8)) { mCallbacks->onTorchStatusChanged( - String8::format("%d", i), TorchModeStatus::NOT_AVAILABLE); + id8, TorchModeStatus::NOT_AVAILABLE); } } } @@ -265,11 +263,13 @@ status_t CameraFlashlight::deviceClosed(const String8& cameraId) { if (isBackwardCompatibleMode(cameraId)) { // notify torch available for all cameras with a flash - int numCameras = getNumberOfCameras(); + std::vector ids = mProviderManager->getAPI1CompatibleCameraDeviceIds(); + int numCameras = static_cast(ids.size()); for (int i = 0; i < numCameras; i++) { - if (hasFlashUnitLocked(String8::format("%d", i))) { + String8 id8(ids[i].c_str()); + if (hasFlashUnitLocked(id8)) { mCallbacks->onTorchStatusChanged( - String8::format("%d", i), TorchModeStatus::AVAILABLE_OFF); + id8, TorchModeStatus::AVAILABLE_OFF); } } } diff --git a/services/camera/libcameraservice/CameraFlashlight.h b/services/camera/libcameraservice/CameraFlashlight.h index 07ce829130..1baaba27fd 100644 --- a/services/camera/libcameraservice/CameraFlashlight.h +++ b/services/camera/libcameraservice/CameraFlashlight.h @@ -92,8 +92,6 @@ class CameraFlashlight : public virtual VirtualLightRefBase { // opening cameras) bool isBackwardCompatibleMode(const String8& cameraId); - int getNumberOfCameras(); - sp mFlashControl; sp mProviderManager;