diff options
author | Emilian Peev <epeevs@codeaurora.org> | 2016-01-07 20:12:55 +0100 |
---|---|---|
committer | Daniel Hillenbrand <codeworkx@cyanogenmod.org> | 2016-01-07 11:39:36 -0800 |
commit | 735ba518afd8b8e7d2f76dcc9e5ec6415c708472 (patch) | |
tree | c1ec6fce064935b5f69385cb386f465b50487f55 | |
parent | 986790ef16c3b20246d2fe745b50c291af7659d3 (diff) | |
download | android_packages_apps_Snap-735ba518afd8b8e7d2f76dcc9e5ec6415c708472.tar.gz android_packages_apps_Snap-735ba518afd8b8e7d2f76dcc9e5ec6415c708472.tar.bz2 android_packages_apps_Snap-735ba518afd8b8e7d2f76dcc9e5ec6415c708472.zip |
SnapdragonCamera: Make direct shutter callbacks configurable
Calling shutter callbacks directly decreases the
delay with which 'takePicture' calls are triggered
during continuous burst capture. As such more time
is spent processing and starting next snapshots
resulting in a less responsive UI thread. The preview
doesn't actually hang or stop but only the UI is not
be able to update it as frequently as before. In order
to avoid this but also have the burst perfomance
enhancement as well a configurable Android property
is added:
"persist.camera.direct.cb -> 0/1" which when disabled
will post shutter event callbacks like before on the
UI thread and when when enabled will trigger them
directly.
Change-Id: Id6fd747eeb19026791faa1ce9db20302767a7695
CRs-Fixed: 794460
-rw-r--r-- | src/com/android/camera/AndroidCameraManagerImpl.java | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/com/android/camera/AndroidCameraManagerImpl.java b/src/com/android/camera/AndroidCameraManagerImpl.java index b985ce315..7f69b329f 100644 --- a/src/com/android/camera/AndroidCameraManagerImpl.java +++ b/src/com/android/camera/AndroidCameraManagerImpl.java @@ -46,6 +46,7 @@ import android.hardware.Camera.CameraDataCallback; import android.hardware.Camera.CameraMetaDataCallback; import com.android.camera.util.ApiHelper; import android.os.ConditionVariable; +import android.os.SystemProperties; import org.codeaurora.snapcam.R; @@ -104,6 +105,7 @@ class AndroidCameraManagerImpl implements CameraManager { private static final int SET_AUTO_HDR_MODE = 801; private CameraHandler mCameraHandler; private android.hardware.Camera mCamera; + private static final String PERSIST_DIRECT_CALLBACK = "persist.camera.direct.cb"; // Used to retain a copy of Parameters for setting parameters. private Parameters mParamsToSet; @@ -733,6 +735,7 @@ class AndroidCameraManagerImpl implements CameraManager { private final Handler mHandler; private final CameraShutterCallback mCallback; private final CameraProxy mCamera; + private final boolean mDirectCallback; /** * Returns a new instance of {@link ShutterCallbackForward}. @@ -754,15 +757,26 @@ class AndroidCameraManagerImpl implements CameraManager { mHandler = h; mCamera = camera; mCallback = cb; + mDirectCallback = SystemProperties.getBoolean( + PERSIST_DIRECT_CALLBACK, false); } @Override public void onShutter() { final android.hardware.Camera currentCamera = mCamera.getCamera(); - if (currentCamera.equals(mCamera.getCamera())) { - mCallback.onShutter(mCamera); - } + if (mDirectCallback) { + mCallback.onShutter(mCamera); + } else { + mHandler.post(new Runnable() { + @Override + public void run() { + if (currentCamera.equals(mCamera.getCamera())) { + mCallback.onShutter(mCamera); + } + } + }); + } } } |