Camera: patching camera service for treble
Bug: 30985004
Change-Id: Idf3ec26abb6b10a0e3839e301e84c8b05ac165c5
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.cpp b/services/camera/libcameraservice/common/CameraProviderManager.cpp
index 8b27c67..cb965b6 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.cpp
+++ b/services/camera/libcameraservice/common/CameraProviderManager.cpp
@@ -427,8 +427,7 @@
}
status_t CameraProviderManager::ProviderInfo::dump(int fd, const Vector<String16>&) const {
- dprintf(fd, " %s: v%d.%d, %zu devices:\n", mProviderName.c_str(),
- mInterface->version.get_major(), mInterface->version.get_minor(), mDevices.size());
+ dprintf(fd, " %s: %zu devices:\n", mProviderName.c_str(), mDevices.size());
for (auto& device : mDevices) {
dprintf(fd, " %s: Resource cost: %d\n", device->mName.c_str(),
@@ -450,7 +449,7 @@
sp<StatusListener> listener;
std::string id;
{
- std::lock_guard<std::mutex> lock(mManager->mInterfaceMutex);
+ std::lock_guard<std::mutex> lock(mManager->mStatusListenerMutex);
bool known = false;
for (auto& deviceInfo : mDevices) {
if (deviceInfo->mName == cameraDeviceName) {
@@ -487,7 +486,7 @@
sp<StatusListener> listener;
std::string id;
{
- std::lock_guard<std::mutex> lock(mManager->mInterfaceMutex);
+ std::lock_guard<std::mutex> lock(mManager->mStatusListenerMutex);
bool known = false;
for (auto& deviceInfo : mDevices) {
if (deviceInfo->mName == cameraDeviceName) {
diff --git a/services/camera/libcameraservice/common/CameraProviderManager.h b/services/camera/libcameraservice/common/CameraProviderManager.h
index 345863c..641dab4 100644
--- a/services/camera/libcameraservice/common/CameraProviderManager.h
+++ b/services/camera/libcameraservice/common/CameraProviderManager.h
@@ -194,6 +194,8 @@
// All private members, unless otherwise noted, expect mInterfaceMutex to be locked before use
mutable std::mutex mInterfaceMutex;
+ // the status listener update callbacks will lock mStatusMutex
+ mutable std::mutex mStatusListenerMutex;
wp<StatusListener> mListener;
ServiceInteractionProxy* mServiceProxy;