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