Fix the crash when video quality changes.
Stop the preview in surfaceChanged before restarting the preview.
bug:2974865
Change-Id: Ie6b99c2650ee4900a277da87006950e984358d6f
diff --git a/src/com/android/camera/VideoCamera.java b/src/com/android/camera/VideoCamera.java
index 1d19561..cb0bb02 100644
--- a/src/com/android/camera/VideoCamera.java
+++ b/src/com/android/camera/VideoCamera.java
@@ -639,6 +639,10 @@
}
mCameraDevice.lock();
+ if (mPreviewing == true) {
+ mCameraDevice.stopPreview();
+ mPreviewing = false;
+ }
setPreviewDisplay(mSurfaceHolder);
Util.setCameraDisplayOrientation(this, mCameraId, mCameraDevice);
setCameraParameters();
@@ -805,6 +809,10 @@
mHandler.sendEmptyMessage(INIT_RECORDER);
} else {
stopVideoRecording();
+ // If video quality changes, the surface will change. But we need to
+ // initialize the recorder here. So collpase the head-up display to
+ // keep the state of recorder consistent.
+ mHeadUpDisplay.collapse();
restartPreview();
initializeRecorder();
}