summaryrefslogtreecommitdiffstats
path: root/core/jni
diff options
context:
space:
mode:
Diffstat (limited to 'core/jni')
-rw-r--r--core/jni/android_hardware_camera2_CameraMetadata.cpp20
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 },