summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSol Boucher <solb@google.com>2014-08-26 21:16:02 -0700
committerSol Boucher <solb@google.com>2014-08-26 21:31:35 -0700
commit80cda8dae801f09c2ce928d0f3feb8a569939fc2 (patch)
tree7f86812981aa76018252c95d49a828ccda0bbc5d
parentf27e71f979e803a3ac00f4057eb909886d957a3e (diff)
downloadandroid_frameworks_ex-80cda8dae801f09c2ce928d0f3feb8a569939fc2.tar.gz
android_frameworks_ex-80cda8dae801f09c2ce928d0f3feb8a569939fc2.tar.bz2
android_frameworks_ex-80cda8dae801f09c2ce928d0f3feb8a569939fc2.zip
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
-rw-r--r--camera2/portability/src/com/android/ex/camera2/portability/AndroidCamera2AgentImpl.java15
1 files 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