From f43a3d7b1cee33cac1edb9bf0a15bf22c9b366c8 Mon Sep 17 00:00:00 2001 From: Santhosh Kumar H E Date: Wed, 3 Dec 2014 15:33:56 +0530 Subject: Initialize focus overlay manager if it is not initialized. Camera open thread initializes the focus overlay manager after opening camera. In a rare scenario above background thread had not initialized focus overlay manager by the time UI thread start acessesing it, so we see a crash. Initialize focus overlay manager from UI thread if it is not initialized already. Change-Id: I1635c8759d0e0647fe61fe975a0cc24df40df529 --- src/com/android/camera/PhotoModule.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index 372ae3aa1..206f05f18 100755 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -2784,9 +2784,13 @@ public class PhotoModule mMirror = (info.facing == CameraInfo.CAMERA_FACING_FRONT); String[] defaultFocusModes = mActivity.getResources().getStringArray( R.array.pref_camera_focusmode_default_array); - mFocusManager = new FocusOverlayManager(mPreferences, defaultFocusModes, - mInitialParams, this, mMirror, - mActivity.getMainLooper(), mUI); + synchronized (this) { + if (mFocusManager == null) { + mFocusManager = new FocusOverlayManager(mPreferences, defaultFocusModes, + mInitialParams, this, mMirror, + mActivity.getMainLooper(), mUI); + } + } } } @@ -3057,6 +3061,8 @@ public class PhotoModule setCameraState(IDLE); } + if (mFocusManager == null) initializeFocusManager(); + if (!mSnapshotOnIdle) { mFocusManager.setAeAwbLock(false); // Unlock AE and AWB. } -- cgit v1.2.3