Reapply "camera2 jni: nativeReadValues() can use camera_metadata_ro_entry instead of camera_metadata_entry"
This reverts commit a5dbb9b15325d240ee1b8c8272ee32c3aeefd61b.
With this updated commit we don't return a NULL array instead of a 0
sized array in case entry.count is 0. Camera clients may be expecting a
non-null zero sized array for these cases as well.
Bug: 371223465
Flag: EXEMPT bugfix
Test: Manual GCA
Change-Id: Id06671aa0f78a96c757e587443f73e93ef46ce74
Signed-off-by: Jayant Chowdhary <jchowdhary@google.com>
diff --git a/core/jni/android_hardware_camera2_CameraMetadata.cpp b/core/jni/android_hardware_camera2_CameraMetadata.cpp
index 041fed7..a098737 100644
--- a/core/jni/android_hardware_camera2_CameraMetadata.cpp
+++ b/core/jni/android_hardware_camera2_CameraMetadata.cpp
@@ -336,7 +336,7 @@
static jbyteArray CameraMetadata_readValues(JNIEnv *env, jclass thiz, jint tag, jlong ptr) {
ALOGV("%s (tag = %d)", __FUNCTION__, tag);
- CameraMetadata* metadata = CameraMetadata_getPointerThrow(env, ptr);
+ const CameraMetadata *metadata = CameraMetadata_getPointerThrow(env, ptr);
if (metadata == NULL) return NULL;
const camera_metadata_t *metaBuffer = metadata->getAndLock();
@@ -349,16 +349,15 @@
}
size_t tagSize = Helpers::getTypeSize(tagType);
- camera_metadata_entry entry = metadata->find(tag);
+ camera_metadata_ro_entry entry = metadata->find(tag);
if (entry.count == 0) {
- if (!metadata->exists(tag)) {
- ALOGV("%s: Tag %d does not have any entries", __FUNCTION__, tag);
- return NULL;
- } else {
- // OK: we will return a 0-sized array.
- ALOGV("%s: Tag %d had an entry, but it had 0 data", __FUNCTION__,
- tag);
- }
+ if (!metadata->exists(tag)) {
+ ALOGV("%s: Tag %d does not have any entries", __FUNCTION__, tag);
+ return NULL;
+ } else {
+ // OK: we will return a 0-sized array.
+ ALOGV("%s: Tag %d had an entry, but it had 0 data", __FUNCTION__, tag);
+ }
}
jsize byteCount = entry.count * tagSize;