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();
         }