diff options
| author | Eino-Ville Talvala <etalvala@google.com> | 2013-08-27 12:09:04 -0700 |
|---|---|---|
| committer | Eino-Ville Talvala <etalvala@google.com> | 2013-09-11 13:18:10 -0700 |
| commit | 70c2207c34cf0e6b3b383b1b1500ff5385aa51a6 (patch) | |
| tree | 48c81e88d69e45be7ffc614f3d952d1f4e08de6c /core/jni | |
| parent | 4af73c2153747d0624ccc75dfa001cb91982957f (diff) | |
| download | frameworks_base-70c2207c34cf0e6b3b383b1b1500ff5385aa51a6.zip frameworks_base-70c2207c34cf0e6b3b383b1b1500ff5385aa51a6.tar.gz frameworks_base-70c2207c34cf0e6b3b383b1b1500ff5385aa51a6.tar.bz2 | |
Camera2: Immutable metadata
Make all camera metadata immutable once created; requests are
created using CameraRequest.Builder.
- Separate CameraMetadata implementation from interface
- Implement deep copying of metadata
- Requests/results/properties have-a native implementation
Bug: 10360518
Change-Id: Ia6300c237219d39f70c63156fa9ca666d951a36e
Diffstat (limited to 'core/jni')
| -rw-r--r-- | core/jni/android_hardware_camera2_CameraMetadata.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/core/jni/android_hardware_camera2_CameraMetadata.cpp b/core/jni/android_hardware_camera2_CameraMetadata.cpp index 852c4d4..3c7da1e 100644 --- a/core/jni/android_hardware_camera2_CameraMetadata.cpp +++ b/core/jni/android_hardware_camera2_CameraMetadata.cpp @@ -38,7 +38,7 @@ #endif // fully-qualified class name -#define CAMERA_METADATA_CLASS_NAME "android/hardware/camera2/CameraMetadata" +#define CAMERA_METADATA_CLASS_NAME "android/hardware/camera2/impl/CameraMetadataNative" using namespace android; @@ -152,6 +152,21 @@ static jlong CameraMetadata_allocate(JNIEnv *env, jobject thiz) { return reinterpret_cast<jlong>(new CameraMetadata()); } +static jlong CameraMetadata_allocateCopy(JNIEnv *env, jobject thiz, + jobject other) { + ALOGV("%s", __FUNCTION__); + + CameraMetadata* otherMetadata = + CameraMetadata_getPointerThrow(env, other, "other"); + + // In case of exception, return + if (otherMetadata == NULL) return NULL; + + // Clone native metadata and return new pointer + return reinterpret_cast<jlong>(new CameraMetadata(*otherMetadata)); +} + + static jboolean CameraMetadata_isEmpty(JNIEnv *env, jobject thiz) { ALOGV("%s", __FUNCTION__); @@ -361,6 +376,9 @@ static JNINativeMethod gCameraMetadataMethods[] = { { "nativeAllocate", "()J", (void*)CameraMetadata_allocate }, + { "nativeAllocateCopy", + "(L" CAMERA_METADATA_CLASS_NAME ";)J", + (void *)CameraMetadata_allocateCopy }, { "nativeIsEmpty", "()Z", (void*)CameraMetadata_isEmpty }, |
