Merge "Camera: Advertise only unique API1 compatible devices" into oc-dev
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.cpp b/services/camera/libcameraservice/common/CameraProviderManager.cpp
index 65633db..b9d6843 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.cpp
+++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp
@@ -87,11 +87,7 @@
int count = 0;
for (auto& provider : mProviders) {
if (kStandardProviderTypes.find(provider->getType()) != std::string::npos) {
- for (auto& device : provider->mDevices) {
- if (device->isAPI1Compatible()) {
- count++;
- }
- }
+ count += provider->mUniqueAPI1CompatibleCameraIds.size();
}
}
return count;
@@ -113,10 +109,8 @@
std::vector<std::string> deviceIds;
for (auto& provider : mProviders) {
if (kStandardProviderTypes.find(provider->getType()) != std::string::npos) {
- for (auto& device : provider->mDevices) {
- if (device->isAPI1Compatible()) {
- deviceIds.push_back(device->mId);
- }
+ for (auto& id : provider->mUniqueAPI1CompatibleCameraIds) {
+ deviceIds.push_back(id);
}
}
}
@@ -466,6 +460,7 @@
mProviderName(providerName),
mInterface(interface),
mProviderTagid(generateVendorTagId(providerName)),
+ mUniqueDeviceCount(0),
mManager(manager) {
(void) mManager;
}
@@ -539,6 +534,9 @@
for (auto& device : mDevices) {
mUniqueCameraIds.insert(device->mId);
+ if (device->isAPI1Compatible()) {
+ mUniqueAPI1CompatibleCameraIds.insert(device->mId);
+ }
}
mUniqueDeviceCount = mUniqueCameraIds.size();
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.h b/services/camera/libcameraservice/common/CameraProviderManager.h
index 9ba7f91..e82282f 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.h
+++ b/services/camera/libcameraservice/common/CameraProviderManager.h
@@ -315,6 +315,7 @@
std::vector<std::unique_ptr<DeviceInfo>> mDevices;
std::set<std::string> mUniqueCameraIds;
int mUniqueDeviceCount;
+ std::set<std::string> mUniqueAPI1CompatibleCameraIds;
// HALv1-specific camera fields, including the actual device interface
struct DeviceInfo1 : public DeviceInfo {