summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEmilian Peev <epeevs@codeaurora.org>2016-01-07 20:12:55 +0100
committerDaniel Hillenbrand <codeworkx@cyanogenmod.org>2016-01-07 11:39:36 -0800
commit735ba518afd8b8e7d2f76dcc9e5ec6415c708472 (patch)
treec1ec6fce064935b5f69385cb386f465b50487f55 /src
parent986790ef16c3b20246d2fe745b50c291af7659d3 (diff)
downloadandroid_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
Diffstat (limited to 'src')
-rw-r--r--src/com/android/camera/AndroidCameraManagerImpl.java20
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);
+ }
+ }
+ });
+ }
}
}