Merge changes Ic7fd2787,If97579fd
* changes:
Camera: notify AE trigger ID change
Camera: fix camera ID in flashlight control
diff --git a/services/camera/libcameraservice/CameraFlashlight.cpp b/services/camera/libcameraservice/CameraFlashlight.cpp
index 394701a..471c77d 100644
--- a/services/camera/libcameraservice/CameraFlashlight.cpp
+++ b/services/camera/libcameraservice/CameraFlashlight.cpp
@@ -120,20 +120,15 @@
return res;
}
-int CameraFlashlight::getNumberOfCameras() {
- size_t len = mProviderManager->getAPI1CompatibleCameraDeviceIds().size();
- return static_cast<int>(len);
-}
-
status_t CameraFlashlight::findFlashUnits() {
Mutex::Autolock l(mLock);
status_t res;
std::vector<String8> cameraIds;
- int numberOfCameras = getNumberOfCameras();
+ std::vector<std::string> ids = mProviderManager->getAPI1CompatibleCameraDeviceIds();
+ int numberOfCameras = static_cast<int>(ids.size());
cameraIds.resize(numberOfCameras);
// No module, must be provider
- std::vector<std::string> ids = mProviderManager->getAPI1CompatibleCameraDeviceIds();
for (size_t i = 0; i < cameraIds.size(); i++) {
cameraIds[i] = String8(ids[i].c_str());
}
@@ -187,7 +182,8 @@
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 @@
if (mOpenedCameraIds.size() == 0) {
// notify torch unavailable for all cameras with a flash
- int numCameras = getNumberOfCameras();
+ std::vector<std::string> ids = mProviderManager->getAPI1CompatibleCameraDeviceIds();
+ int numCameras = static_cast<int>(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 @@
if (isBackwardCompatibleMode(cameraId)) {
// notify torch available for all cameras with a flash
- int numCameras = getNumberOfCameras();
+ std::vector<std::string> ids = mProviderManager->getAPI1CompatibleCameraDeviceIds();
+ int numCameras = static_cast<int>(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 07ce829..1baaba2 100644
--- a/services/camera/libcameraservice/CameraFlashlight.h
+++ b/services/camera/libcameraservice/CameraFlashlight.h
@@ -92,8 +92,6 @@
// opening cameras)
bool isBackwardCompatibleMode(const String8& cameraId);
- int getNumberOfCameras();
-
sp<FlashControlBase> mFlashControl;
sp<CameraProviderManager> mProviderManager;
diff --git a/services/camera/libcameraservice/api1/client2/FrameProcessor.cpp b/services/camera/libcameraservice/api1/client2/FrameProcessor.cpp
index 6e21126..187bea9 100644
--- a/services/camera/libcameraservice/api1/client2/FrameProcessor.cpp
+++ b/services/camera/libcameraservice/api1/client2/FrameProcessor.cpp
@@ -292,7 +292,8 @@
}
// Once all 3A states are received, notify the client about 3A changes.
- if (pendingState.aeState != m3aState.aeState) {
+ if (pendingState.aeState != m3aState.aeState ||
+ pendingState.aeTriggerId > m3aState.aeTriggerId) {
ALOGV("%s: Camera %d: AE state %d->%d",
__FUNCTION__, cameraId,
m3aState.aeState, pendingState.aeState);