summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/CameraActivity.java
diff options
context:
space:
mode:
authorByunghun Jeon <bjeon@codeaurora.org>2016-08-10 16:50:11 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-08-16 16:14:31 -0700
commit7dfcaf722d00d9fd64b086305579f557efb2b683 (patch)
tree83091151467c89d2f8840cae7c385c5d38a41698 /src/com/android/camera/CameraActivity.java
parent904d5069547dcb6a90175558ba3c608f0465d1eb (diff)
downloadandroid_packages_apps_Snap-7dfcaf722d00d9fd64b086305579f557efb2b683.tar.gz
android_packages_apps_Snap-7dfcaf722d00d9fd64b086305579f557efb2b683.tar.bz2
android_packages_apps_Snap-7dfcaf722d00d9fd64b086305579f557efb2b683.zip
SnapdragonCamera: Fix crash when switching between camera1, camera2
Camera1 uses CameraHolder for opening/releasing camera and it does not release right away when closing camera. This is done to optimize opening/closing but since Camera2 does not use CameraHolder, state is not proper when switching between camera1 and camera2. So ignore the timer and release right away when going from camera1 to camera2. Change-Id: Ibc40297817ebfca04e19097bd463f78aec4d75cd CRs-Fixed: 1019338
Diffstat (limited to 'src/com/android/camera/CameraActivity.java')
-rwxr-xr-xsrc/com/android/camera/CameraActivity.java15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/com/android/camera/CameraActivity.java b/src/com/android/camera/CameraActivity.java
index a330f6a5f..1ebc3f047 100755
--- a/src/com/android/camera/CameraActivity.java
+++ b/src/com/android/camera/CameraActivity.java
@@ -69,7 +69,6 @@ import android.os.PowerManager.WakeLock;
import android.os.SystemProperties;
import android.preference.PreferenceManager;
import android.provider.MediaStore;
-import android.provider.Settings;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@@ -226,6 +225,7 @@ public class CameraActivity extends Activity
private FrameLayout mPreviewContentLayout;
private boolean mPaused = true;
private boolean mHasCriticalPermissions;
+ private boolean mForceReleaseCamera = false;
private Uri[] mNfcPushUris = new Uri[1];
@@ -1912,9 +1912,9 @@ public class CameraActivity extends Activity
switch (requestCode) {
case PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION: {
// If request is cancelled, the result arrays are empty.
- mCurrentModule.waitingLocationPermissionResult(false);
+ mCurrentModule.waitingLocationPermissionResult(false);
if (grantResults.length > 0
- && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.v(TAG, "Location permission is granted");
mCurrentModule.enableRecordingLocation(true);
} else {
@@ -1926,11 +1926,17 @@ public class CameraActivity extends Activity
}
}
+ public boolean isForceReleaseCamera() {
+ return mForceReleaseCamera;
+ }
+
@Override
public void onModuleSelected(int moduleIndex) {
boolean cam2on = SettingsManager.getInstance().isCamera2On();
- if (cam2on && moduleIndex == ModuleSwitcher.PHOTO_MODULE_INDEX)
+ mForceReleaseCamera = cam2on && moduleIndex == ModuleSwitcher.PHOTO_MODULE_INDEX;
+ if (mForceReleaseCamera) {
moduleIndex = ModuleSwitcher.CAPTURE_MODULE_INDEX;
+ }
if (mCurrentModuleIndex == moduleIndex) {
if (mCurrentModuleIndex != ModuleSwitcher.CAPTURE_MODULE_INDEX) {
return;
@@ -1941,6 +1947,7 @@ public class CameraActivity extends Activity
setModuleFromIndex(moduleIndex);
openModule(mCurrentModule);
+ mForceReleaseCamera = false;
mCurrentModule.onOrientationChanged(mLastRawOrientation);
if (mMediaSaveService != null) {
mCurrentModule.onMediaSaveServiceConnected(mMediaSaveService);