diff options
author | Likai Ding <likaid@codeaurora.org> | 2015-08-05 15:30:35 +0800 |
---|---|---|
committer | Daniel Hillenbrand <codeworkx@cyanogenmod.org> | 2016-01-08 22:49:08 -0800 |
commit | b0fa4084e51c14f8d39f40fd8d31054aa39e5a9c (patch) | |
tree | ad8110a8c3a258b3ab8bc10835efc4bb26d873cd | |
parent | c134c1e13143d634d97d408b7f44d291acb30404 (diff) | |
download | android_packages_apps_Snap-b0fa4084e51c14f8d39f40fd8d31054aa39e5a9c.tar.gz android_packages_apps_Snap-b0fa4084e51c14f8d39f40fd8d31054aa39e5a9c.tar.bz2 android_packages_apps_Snap-b0fa4084e51c14f8d39f40fd8d31054aa39e5a9c.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
-rw-r--r-- | src/com/android/camera/AndroidCameraManagerImpl.java | 11 | ||||
-rw-r--r-- | src/com/android/camera/CameraManager.java | 1 | ||||
-rw-r--r-- | src/com/android/camera/PhotoModule.java | 8 |
3 files changed, 19 insertions, 1 deletions
diff --git a/src/com/android/camera/AndroidCameraManagerImpl.java b/src/com/android/camera/AndroidCameraManagerImpl.java index 7f69b329f..3d9c2be06 100644 --- a/src/com/android/camera/AndroidCameraManagerImpl.java +++ b/src/com/android/camera/AndroidCameraManagerImpl.java @@ -79,6 +79,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; @@ -352,6 +353,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; @@ -514,6 +518,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 d5547a4ef..f6afce854 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 95961ea03..8a3000651 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -529,7 +529,6 @@ public class PhotoModule if (mCameraState == SNAPSHOT_IN_PROGRESS) { return; } - mUI.hidePreviewCover(); setCameraState(IDLE); mFocusManager.onPreviewStarted(); startFaceDetection(); @@ -2697,6 +2696,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(); |