From 975a39e9067e8d8f71e74813d0199e0e51556bb8 Mon Sep 17 00:00:00 2001 From: Shuzhen Wang Date: Wed, 27 Jun 2018 14:35:46 -0700 Subject: [PATCH] Camera: Handle duplicate camera Id due to openLegacy support When HAL supports openLegacy, same camera id can be added more than once. Because we now use vector to store API1 compatible camera ids, make sure no duplicate strings are added. Test: Vendor camera app using openLegacy, Camera CTS Bug: 110815837 Change-Id: I327744e102cc75929ebcdf51661f9f4ec7f3acf9 --- .../libcameraservice/common/CameraProviderManager.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/services/camera/libcameraservice/common/CameraProviderManager.cpp b/services/camera/libcameraservice/common/CameraProviderManager.cpp index 43f1a91fd2..0ce4318e7f 100644 --- a/services/camera/libcameraservice/common/CameraProviderManager.cpp +++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp @@ -631,7 +631,12 @@ status_t CameraProviderManager::ProviderInfo::addDevice(const std::string& name, mUniqueCameraIds.insert(id); if (isAPI1Compatible) { - mUniqueAPI1CompatibleCameraIds.push_back(id); + // addDevice can be called more than once for the same camera id if HAL + // supports openLegacy. + if (std::find(mUniqueAPI1CompatibleCameraIds.begin(), mUniqueAPI1CompatibleCameraIds.end(), + id) == mUniqueAPI1CompatibleCameraIds.end()) { + mUniqueAPI1CompatibleCameraIds.push_back(id); + } } if (parsedId != nullptr) {