@ -231,29 +231,33 @@ status_t CameraService::enumerateProviders() {
for ( auto & cameraId : mCameraProviderManager - > getCameraDeviceIds ( ) ) {
for ( auto & cameraId : mCameraProviderManager - > getCameraDeviceIds ( ) ) {
String8 id8 = String8 ( cameraId . c_str ( ) ) ;
String8 id8 = String8 ( cameraId . c_str ( ) ) ;
bool cameraFound = false ;
{
{
Mutex : : Autolock lock ( mCameraStatesLock ) ;
Mutex : : Autolock lock ( mCameraStatesLock ) ;
auto iter = mCameraStates . find ( id8 ) ;
auto iter = mCameraStates . find ( id8 ) ;
if ( iter ! = mCameraStates . end ( ) ) {
if ( iter ! = mCameraStates . end ( ) ) {
contin ue;
cameraFound = tr ue;
}
}
}
}
hardware : : camera : : common : : V1_0 : : CameraResourceCost cost ;
if ( ! cameraFound ) {
res = mCameraProviderManager - > getResourceCost ( cameraId , & cost ) ;
hardware : : camera : : common : : V1_0 : : CameraResourceCost cost ;
if ( res ! = OK ) {
res = mCameraProviderManager - > getResourceCost ( cameraId , & cost ) ;
ALOGE ( " Failed to query device resource cost: %s (%d) " , strerror ( - res ) , res ) ;
if ( res ! = OK ) {
continue ;
ALOGE ( " Failed to query device resource cost: %s (%d) " , strerror ( - res ) , res ) ;
}
continue ;
std : : set < String8 > conflicting ;
}
for ( size_t i = 0 ; i < cost . conflictingDevices . size ( ) ; i + + ) {
std : : set < String8 > conflicting ;
conflicting . emplace ( String8 ( cost . conflictingDevices [ i ] . c_str ( ) ) ) ;
for ( size_t i = 0 ; i < cost . conflictingDevices . size ( ) ; i + + ) {
}
conflicting . emplace ( String8 ( cost . conflictingDevices [ i ] . c_str ( ) ) ) ;
}
{
{
Mutex : : Autolock lock ( mCameraStatesLock ) ;
Mutex : : Autolock lock ( mCameraStatesLock ) ;
mCameraStates . emplace ( id8 ,
mCameraStates . emplace ( id8 ,
std : : make_shared < CameraState > ( id8 , cost . resourceCost , conflicting ) ) ;
std : : make_shared < CameraState > ( id8 , cost . resourceCost , conflicting ) ) ;
}
}
}
onDeviceStatusChanged ( id8 , CameraDeviceStatus : : PRESENT ) ;
onDeviceStatusChanged ( id8 , CameraDeviceStatus : : PRESENT ) ;