diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java index 78e7037ef99de..0fcd5984d5a66 100644 --- a/core/java/android/hardware/camera2/CameraManager.java +++ b/core/java/android/hardware/camera2/CameraManager.java @@ -81,13 +81,8 @@ public final class CameraManager { mCameraService = CameraBinderDecorator.newInstance(cameraServiceRaw); try { - int err = CameraMetadataNative.nativeSetupGlobalVendorTagDescriptor(); - if (err == CameraBinderDecorator.EOPNOTSUPP) { - Log.w(TAG, "HAL version doesn't vendor tags."); - } else { - CameraBinderDecorator.throwOnError(CameraMetadataNative. - nativeSetupGlobalVendorTagDescriptor()); - } + CameraBinderDecorator.throwOnError( + CameraMetadataNative.nativeSetupGlobalVendorTagDescriptor()); } catch(CameraRuntimeException e) { throw new IllegalStateException("Failed to setup camera vendor tags", e.asChecked()); diff --git a/core/jni/android_hardware_camera2_CameraMetadata.cpp b/core/jni/android_hardware_camera2_CameraMetadata.cpp index 8c15ac250b6aa..957f95cc266f4 100644 --- a/core/jni/android_hardware_camera2_CameraMetadata.cpp +++ b/core/jni/android_hardware_camera2_CameraMetadata.cpp @@ -579,9 +579,14 @@ static jint CameraMetadata_setupGlobalVendorTagDescriptor(JNIEnv *env, jobject t sp desc; err = cameraService->getCameraVendorTagDescriptor(/*out*/desc); - if (err != OK) { - ALOGE("%s: Failed to setup vendor tag descriptors, received error %s (%d)", __FUNCTION__, - strerror(-err), err); + if (err == -EOPNOTSUPP) { + ALOGW("%s: Camera HAL too old; does not support vendor tags", __FUNCTION__); + VendorTagDescriptor::clearGlobalVendorTagDescriptor(); + + return OK; + } else if (err != OK) { + ALOGE("%s: Failed to setup vendor tag descriptors, received error %s (%d)", + __FUNCTION__, strerror(-err), err); return err; }