summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLikai Ding <likaid@codeaurora.org>2015-08-05 15:30:35 +0800
committerLikai Ding <likaid@codeaurora.org>2015-08-06 07:19:27 +0800
commit37856d6b3bcede0eb514e83d168d24b5f66d21c5 (patch)
tree8aacfa93664a81347cfb0d049206c774581ea96e /src
parent71c704a10909735e1323e767f04ab8be8dcca983 (diff)
downloadandroid_packages_apps_Snap-37856d6b3bcede0eb514e83d168d24b5f66d21c5.tar.gz
android_packages_apps_Snap-37856d6b3bcede0eb514e83d168d24b5f66d21c5.tar.bz2
android_packages_apps_Snap-37856d6b3bcede0eb514e83d168d24b5f66d21c5.zip
SnapdragonCamera: fix screen flash on resuming
Currently preview cover will be hidden shortly after preview started, but if the actual first frame comes late, the main screen will flash. Register a oneshot preview callback to hide preview cover. CRs-Fixed: 881290 Change-Id: I5d93e57f0b9aa338c6b34461d5e3ee31806b6706
Diffstat (limited to 'src')
-rw-r--r--src/com/android/camera/AndroidCameraManagerImpl.java11
-rw-r--r--src/com/android/camera/CameraManager.java1
-rw-r--r--src/com/android/camera/PhotoModule.java8
3 files changed, 19 insertions, 1 deletions
diff --git a/src/com/android/camera/AndroidCameraManagerImpl.java b/src/com/android/camera/AndroidCameraManagerImpl.java
index 1a9e2a7dc..3bfe0c2cb 100644
--- a/src/com/android/camera/AndroidCameraManagerImpl.java
+++ b/src/com/android/camera/AndroidCameraManagerImpl.java
@@ -74,6 +74,7 @@ class AndroidCameraManagerImpl implements CameraManager {
private static final int ADD_CALLBACK_BUFFER = 105;
private static final int SET_PREVIEW_DISPLAY_ASYNC = 106;
private static final int SET_PREVIEW_CALLBACK = 107;
+ private static final int SET_ONESHOT_PREVIEW_CALLBACK = 108;
// Parameters
private static final int SET_PARAMETERS = 201;
private static final int GET_PARAMETERS = 202;
@@ -340,6 +341,9 @@ class AndroidCameraManagerImpl implements CameraManager {
mCamera.setPreviewCallback((PreviewCallback) msg.obj);
return;
+ case SET_ONESHOT_PREVIEW_CALLBACK:
+ mCamera.setOneShotPreviewCallback((PreviewCallback) msg.obj);
+
case ENABLE_SHUTTER_SOUND:
enableShutterSound((msg.arg1 == 1) ? true : false);
return;
@@ -498,6 +502,13 @@ class AndroidCameraManagerImpl implements CameraManager {
}
@Override
+ public void setOneShotPreviewCallback(Handler handler, CameraPreviewDataCallback cb) {
+ mCameraHandler.obtainMessage(
+ SET_ONESHOT_PREVIEW_CALLBACK,
+ PreviewCallbackForward.getNewInstance(handler, this, cb)).sendToTarget();
+ }
+
+ @Override
public void addCallbackBuffer(byte[] callbackBuffer) {
mCameraHandler.obtainMessage(ADD_CALLBACK_BUFFER, callbackBuffer).sendToTarget();
}
diff --git a/src/com/android/camera/CameraManager.java b/src/com/android/camera/CameraManager.java
index 1856ec85c..e7d535060 100644
--- a/src/com/android/camera/CameraManager.java
+++ b/src/com/android/camera/CameraManager.java
@@ -240,6 +240,7 @@ public interface CameraManager {
*/
public void setPreviewDataCallbackWithBuffer(Handler handler, CameraPreviewDataCallback cb);
+ public void setOneShotPreviewCallback(Handler handler, CameraPreviewDataCallback cb);
/**
* Adds buffer for the preview callback.
*
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java
index fd251cee3..54787bd2b 100644
--- a/src/com/android/camera/PhotoModule.java
+++ b/src/com/android/camera/PhotoModule.java
@@ -532,7 +532,6 @@ public class PhotoModule
if (mCameraState == SNAPSHOT_IN_PROGRESS) {
return;
}
- mUI.hidePreviewCover();
setCameraState(IDLE);
mFocusManager.onPreviewStarted();
startFaceDetection();
@@ -2646,6 +2645,13 @@ public class PhotoModule
setCameraParameters(UPDATE_PARAM_ALL);
mCameraDevice.startPreview();
+ mCameraDevice.setOneShotPreviewCallback(mHandler,
+ new CameraManager.CameraPreviewDataCallback() {
+ @Override
+ public void onPreviewFrame(byte[] data, CameraProxy camera) {
+ mUI.hidePreviewCover();
+ }
+ });
mHandler.sendEmptyMessage(ON_PREVIEW_STARTED);
setDisplayOrientation();