From ede09e254df3a4eb60797edb22a48623bdb9fd28 Mon Sep 17 00:00:00 2001 From: Jay Wang Date: Fri, 24 Jun 2016 18:14:19 -0700 Subject: SnapdragonCamera: Fix the crash caused by Ubifocus help menu In some cases, the Ubifocus UI operation is called from camera thread and caused the exception. To resolve the issue, make sure UI operation is done only in UI thread. Change-Id: I07ef3392577169ecd642bf98a6c39de3580e963d CRs-Fixed: 1032532 --- src/com/android/camera/PhotoModule.java | 10 +++++++--- src/com/android/camera/PhotoUI.java | 14 +++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/com/android/camera/PhotoModule.java b/src/com/android/camera/PhotoModule.java index d6caf7eb8..1159e5263 100644 --- a/src/com/android/camera/PhotoModule.java +++ b/src/com/android/camera/PhotoModule.java @@ -3788,14 +3788,18 @@ public class PhotoModule if (refocusOn.equals(mSceneMode)) { try { mSceneMode = Parameters.SCENE_MODE_AUTO; - mUI.setPreference(CameraSettings.KEY_ADVANCED_FEATURES, refocusOn); - mUI.showRefocusDialog(); + if (mHandler.getLooper() == Looper.myLooper()) { + mUI.setPreference(CameraSettings.KEY_ADVANCED_FEATURES, refocusOn); + mUI.showRefocusDialog(); + } } catch (NullPointerException e) { } } else if (optizoomOn.equals(mSceneMode)) { try { mSceneMode = Parameters.SCENE_MODE_AUTO; - mUI.setPreference(CameraSettings.KEY_ADVANCED_FEATURES, optizoomOn); + if (mHandler.getLooper() == Looper.myLooper()) { + mUI.setPreference(CameraSettings.KEY_ADVANCED_FEATURES, optizoomOn); + } } catch (NullPointerException e) { } } else if (mSceneMode == null) { diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java index 09e24a710..7c715d9fd 100644 --- a/src/com/android/camera/PhotoUI.java +++ b/src/com/android/camera/PhotoUI.java @@ -1445,16 +1445,12 @@ public class PhotoUI implements PieListener, AlertDialog dialog = new AlertDialog.Builder(mActivity) .setTitle(R.string.refocus_prompt_title) .setMessage(R.string.refocus_prompt_message) - .setPositiveButton(R.string.dialog_ok, - new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int arg1) { - SharedPreferences.Editor editor = prefs.edit(); - editor.putInt(CameraSettings.KEY_REFOCUS_PROMPT, 0); - editor.apply(); - } - }) + .setPositiveButton(R.string.dialog_ok, null) .show(); + SharedPreferences.Editor editor = prefs.edit(); + editor.putInt(CameraSettings.KEY_REFOCUS_PROMPT, 0); + editor.apply(); + } } -- cgit v1.2.3