diff options
author | Sai Kumar Sanagavarapu <ssanagav@codeaurora.org> | 2015-01-20 17:20:24 +0530 |
---|---|---|
committer | Sai Kumar Sanagavarapu <ssanagav@codeaurora.org> | 2015-01-20 17:20:24 +0530 |
commit | a5d8e57b75324f0b08a7853bef5a09d68143d0f5 (patch) | |
tree | 8f311b802d8adeee4dc65d2d769fe0642ca76b7d | |
parent | d917dde9ecd18dd6dd8f78bd6d4c89d417a90878 (diff) | |
download | android_packages_apps_Snap-a5d8e57b75324f0b08a7853bef5a09d68143d0f5.tar.gz android_packages_apps_Snap-a5d8e57b75324f0b08a7853bef5a09d68143d0f5.tar.bz2 android_packages_apps_Snap-a5d8e57b75324f0b08a7853bef5a09d68143d0f5.zip |
SnapdragonCamera: Sync surface destruction and camera open thread.
If surface gets destroyed while Camera open thread is still trying
to start preview, camera app state machine will go into toss. Next
time when surface gets created again, it might try to set preview
surface again while previewing leading to app exception. So, sync
surface destruction and camera open threads.
Change-Id: I6ba4103559766c327d2bc55887a0f7df1b4b0d40
-rw-r--r-- | src/com/android/camera/PhotoModule.java | 8 | ||||
-rw-r--r-- | src/com/android/camera/PhotoUI.java | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index 10f8f622a..acd76ec7d 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -633,6 +633,14 @@ public class PhotoModule if (mCameraDevice == null) { return; } + try { + if (mOpenCameraThread != null) { + mOpenCameraThread.join(); + mOpenCameraThread = null; + } + } catch (InterruptedException ex) { + // ignore + } mCameraDevice.setPreviewDisplay(null); stopPreview(); } diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java index d4cec7bc0..f6ddd94ff 100644 --- a/src/com/android/camera/PhotoUI.java +++ b/src/com/android/camera/PhotoUI.java @@ -475,7 +475,7 @@ public class PhotoUI implements PieListener, public void surfaceDestroyed(SurfaceHolder holder) { Log.v(TAG, "surfaceDestroyed"); mSurfaceHolder = null; - mController.stopPreview(); + mController.onPreviewUIDestroyed(); } public View getRootView() { |