From 80cda8dae801f09c2ce928d0f3feb8a569939fc2 Mon Sep 17 00:00:00 2001 From: Sol Boucher Date: Tue, 26 Aug 2014 21:16:02 -0700 Subject: camera2-portability: Fix zoom occasionally not working Cache the last valid CameraSettings object The camera2 implementation of CameraProxy#getSettings() now returns the most recent valid CameraSettings object that was provided to it (or the template if no valid cached instance is available). This more closely mimics the camera1 implementation's behavior, and resolves issues where the app relies on finding recent settings there in corner cases. Bug: 17016658 Change-Id: I057feec3f857428dd210300a05f22cafa9f5ba34 --- .../ex/camera2/portability/AndroidCamera2AgentImpl.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java index d139c62..fe0bcee 100644 --- a/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java +++ b/camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java @@ -819,6 +819,7 @@ class AndroidCamera2AgentImpl extends CameraAgent { private final CameraDevice mCamera; private final CameraDeviceInfo.Characteristics mCharacteristics; private final AndroidCamera2Capabilities mCapabilities; + private CameraSettings mLastSettings; public AndroidCamera2ProxyImpl(int cameraIndex, CameraDevice camera, CameraDeviceInfo.Characteristics characteristics, @@ -827,6 +828,7 @@ class AndroidCamera2AgentImpl extends CameraAgent { mCamera = camera; mCharacteristics = characteristics; mCapabilities = new AndroidCamera2Capabilities(properties); + mLastSettings = null; } // TODO: Implement @@ -997,7 +999,10 @@ class AndroidCamera2AgentImpl extends CameraAgent { @Override public CameraSettings getSettings() { - return mCameraHandler.buildSettings(mCapabilities); + if (mLastSettings == null) { + mLastSettings = mCameraHandler.buildSettings(mCapabilities); + } + return mLastSettings; } @Override @@ -1011,9 +1016,13 @@ class AndroidCamera2AgentImpl extends CameraAgent { return false; } - return applySettingsHelper(settings, AndroidCamera2StateHolder.CAMERA_UNCONFIGURED | + if (applySettingsHelper(settings, AndroidCamera2StateHolder.CAMERA_UNCONFIGURED | AndroidCamera2StateHolder.CAMERA_CONFIGURED | - AndroidCamera2StateHolder.CAMERA_PREVIEW_READY); + AndroidCamera2StateHolder.CAMERA_PREVIEW_READY)) { + mLastSettings = settings; + return true; + } + return false; } // TODO: Implement -- cgit v1.2.3