Camera: Use fully qualified name for camera eviction logic
The conflicting device names are fully qualified, but the current
camera id isn't. Make them consistent.
Test: Camera CTS
Bug: 78277539
Change-Id: I1baf8d39b95bb475ad6a25f2eae7d409efe5d239
diff --git a/services/camera/libcameraservice/CameraService.cpp b/services/camera/libcameraservice/CameraService.cpp
index c87b5eb..83e56b6 100644
--- a/services/camera/libcameraservice/CameraService.cpp
+++ b/services/camera/libcameraservice/CameraService.cpp
@@ -1055,8 +1055,16 @@
return BAD_VALUE;
}
+ std::string cameraName;
+ err = mCameraProviderManager->getCameraDeviceName(
+ std::string(cameraId.c_str()), cameraName);
+ if (err != OK) {
+ ALOGE("%s: Failed to find camera device name for id %s: %d",
+ __FUNCTION__, cameraId.c_str(), err);
+ return err;
+ }
// Make descriptor for incoming client
- clientDescriptor = CameraClientManager::makeClientDescriptor(cameraId,
+ clientDescriptor = CameraClientManager::makeClientDescriptor(String8(cameraName.c_str()),
sp<BasicClient>{nullptr}, static_cast<int32_t>(state->getCost()),
state->getConflicting(),
priorityScores[priorityScores.size() - 1],
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.cpp b/services/camera/libcameraservice/common/CameraProviderManager.cpp
index 077e05e..9b1b131 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.cpp
+++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp
@@ -391,6 +391,16 @@
return ret;
}
+status_t CameraProviderManager::getCameraDeviceName(const std::string& id, std::string& name) {
+ std::lock_guard<std::mutex> lock(mInterfaceMutex);
+
+ auto deviceInfo = findDeviceInfoLocked(id);
+ if (deviceInfo == nullptr) return NAME_NOT_FOUND;
+
+ name = deviceInfo->mName;
+ return OK;
+}
+
status_t CameraProviderManager::addProviderLocked(const std::string& newProvider, bool expected) {
for (const auto& providerInfo : mProviders) {
if (providerInfo->mProviderName == newProvider) {
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.h b/services/camera/libcameraservice/common/CameraProviderManager.h
index bbe6789..43b69d5 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.h
+++ b/services/camera/libcameraservice/common/CameraProviderManager.h
@@ -230,6 +230,11 @@
hardware::hidl_version minVersion = hardware::hidl_version{0,0},
hardware::hidl_version maxVersion = hardware::hidl_version{1000,0}) const;
+ /*
+ * Get device name for a particular camera Id
+ */
+ status_t getCameraDeviceName(const std::string& id, std::string& name);
+
private:
// All private members, unless otherwise noted, expect mInterfaceMutex to be locked before use
mutable std::mutex mInterfaceMutex;