From ead4750e7201f3437e3a9adbebdbd5f6b6594767 Mon Sep 17 00:00:00 2001 From: Pawit Pornkitprasan Date: Fri, 23 Jan 2015 20:34:16 +0700 Subject: [PATCH 1/2] Camera: i9082: disable preview after stopping camera This fixes a native crash from Broadcom's driver. However, there is an unwanted side effect of the preview going black while the 'close application' animation is running. Change-Id: I231233d28a1f7ac914408a7d02100a9424c2bf1c --- src/com/android/camera/CameraActivity.java | 2 +- src/com/android/camera/PhotoModule.java | 1 + src/com/android/camera/VideoModule.java | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index f96d634..820ce24 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -1643,7 +1643,7 @@ public class CameraActivity extends QuickActivity mCurrentModule.onPreviewVisibilityChanged(visibility); } - private void updatePreviewRendering(int visibility) { + /* private */ void updatePreviewRendering(int visibility) { if (visibility == ModuleController.VISIBILITY_HIDDEN) { mCameraAppUI.pausePreviewRendering(); } else { diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index b4b5ee7..52b8858 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -1874,6 +1874,7 @@ public class PhotoModule mActivity.getCameraProvider().releaseCamera(mCameraDevice.getCameraId()); mCameraDevice = null; setCameraState(PREVIEW_STOPPED); + mActivity.updatePreviewRendering(ModuleController.VISIBILITY_HIDDEN); mFocusManager.onCameraReleased(); } } diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java index a034a1c..f203c12 100644 --- a/src/com/android/camera/VideoModule.java +++ b/src/com/android/camera/VideoModule.java @@ -1026,6 +1026,7 @@ public class VideoModule extends CameraModule } mCameraDevice.setZoomChangeListener(null); mActivity.getCameraProvider().releaseCamera(mCameraDevice.getCameraId()); + mActivity.updatePreviewRendering(ModuleController.VISIBILITY_HIDDEN); mCameraDevice = null; mPreviewing = false; mSnapshotInProgress = false; -- 2.3.5 From 79478cabada02634258b3567b282271fc4e28b92 Mon Sep 17 00:00:00 2001 From: Pawit Pornkitprasan Date: Sat, 24 Jan 2015 21:59:20 +0700 Subject: [PATCH 2/2] Camera: i9082: update preview state after starting preview Fixes a regression in I231233d28a1f7ac914408a7d02100a9424c2bf1c where preview freezes after switching between front and back cams Change-Id: I036539aa602d738372f421499cf5ac8c646523ed --- src/com/android/camera/CameraActivity.java | 2 +- src/com/android/camera/PhotoModule.java | 1 + src/com/android/camera/VideoModule.java | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java index 820ce24..fcb44bd 100644 --- a/src/com/android/camera/CameraActivity.java +++ b/src/com/android/camera/CameraActivity.java @@ -1632,7 +1632,7 @@ public class CameraActivity extends QuickActivity * Call this whenever the mode drawer or filmstrip change the visibility * state. */ - private void updatePreviewVisibility() { + /* package */ void updatePreviewVisibility() { if (mCurrentModule == null) { return; } diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index 52b8858..8e3f2e6 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -1987,6 +1987,7 @@ public class PhotoModule mCameraDevice.startPreviewWithCallback(new Handler(Looper.getMainLooper()), startPreviewCallback); } + mActivity.updatePreviewVisibility(); } @Override diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java index f203c12..129f39a 100644 --- a/src/com/android/camera/VideoModule.java +++ b/src/com/android/camera/VideoModule.java @@ -981,6 +981,7 @@ public class VideoModule extends CameraModule } }); mPreviewing = true; + mActivity.updatePreviewVisibility(); } catch (Throwable ex) { closeCamera(); throw new RuntimeException("startPreview failed", ex); -- 2.3.5