diff options
author | Yin-Chia Yeh <yinchiayeh@google.com> | 2015-03-25 00:05:59 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-03-25 00:05:59 +0000 |
commit | 525907aa2cf2148186ed55e47e424395b9a43dca (patch) | |
tree | 947b98272d9e5956eb5c7e08b27895117e1488d2 /services | |
parent | ae9710473b88592c557488bfcae71616d9e9b75f (diff) | |
parent | 54298b338cf9f782f2ac681a15e6cbbb99649350 (diff) | |
download | frameworks_av-525907aa2cf2148186ed55e47e424395b9a43dca.zip frameworks_av-525907aa2cf2148186ed55e47e424395b9a43dca.tar.gz frameworks_av-525907aa2cf2148186ed55e47e424395b9a43dca.tar.bz2 |
Merge "Camera: fix metadata assertion"
Diffstat (limited to 'services')
-rw-r--r-- | services/camera/libcameraservice/common/CameraModule.cpp | 13 | ||||
-rw-r--r-- | services/camera/libcameraservice/common/CameraModule.h | 8 |
2 files changed, 9 insertions, 12 deletions
diff --git a/services/camera/libcameraservice/common/CameraModule.cpp b/services/camera/libcameraservice/common/CameraModule.cpp index 50cece4..e5b12ae 100644 --- a/services/camera/libcameraservice/common/CameraModule.cpp +++ b/services/camera/libcameraservice/common/CameraModule.cpp @@ -73,24 +73,25 @@ int CameraModule::getCameraInfo(int cameraId, struct camera_info *info) { ssize_t index = mCameraInfoMap.indexOfKey(cameraId); if (index == NAME_NOT_FOUND) { // Get camera info from raw module and cache it - CameraInfo cameraInfo; - camera_info rawInfo; + camera_info rawInfo, cameraInfo; int ret = mModule->get_camera_info(cameraId, &rawInfo); if (ret != 0) { return ret; } - CameraMetadata &m = cameraInfo.cameraCharacteristics; + CameraMetadata m; m = rawInfo.static_camera_characteristics; deriveCameraCharacteristicsKeys(rawInfo.device_version, m); - cameraInfo.cameraInfo = rawInfo; - cameraInfo.cameraInfo.static_camera_characteristics = m.getAndLock(); + mCameraCharacteristicsMap.add(cameraId, m); + cameraInfo = rawInfo; + cameraInfo.static_camera_characteristics = + mCameraCharacteristicsMap.valueFor(cameraId).getAndLock(); mCameraInfoMap.add(cameraId, cameraInfo); index = mCameraInfoMap.indexOfKey(cameraId); } assert(index != NAME_NOT_FOUND); // return the cached camera info - *info = mCameraInfoMap[index].cameraInfo; + *info = mCameraInfoMap[index]; return 0; } diff --git a/services/camera/libcameraservice/common/CameraModule.h b/services/camera/libcameraservice/common/CameraModule.h index ecc5b2d..e285b21 100644 --- a/services/camera/libcameraservice/common/CameraModule.h +++ b/services/camera/libcameraservice/common/CameraModule.h @@ -54,13 +54,9 @@ private: static void deriveCameraCharacteristicsKeys(uint32_t deviceVersion, CameraMetadata &chars); status_t filterOpenErrorCode(status_t err); - struct CameraInfo { - CameraMetadata cameraCharacteristics; - camera_info cameraInfo; - }; - camera_module_t *mModule; - KeyedVector<int, CameraInfo> mCameraInfoMap; + KeyedVector<int, camera_info> mCameraInfoMap; + KeyedVector<int, CameraMetadata> mCameraCharacteristicsMap; Mutex mCameraInfoLock; }; |