From 118b54cf80eedcc31b1d296b403e0f774a45f677 Mon Sep 17 00:00:00 2001 From: Likai Ding Date: Mon, 11 May 2015 15:42:02 +0800 Subject: SnapdragonCamera: fix crash after photo deletion In FilmStripView.reload(), camera view is unintentionally removed, which causes unnecessary surface creation and deletion, eventually leads to crash. Fix the check in FilmStripView and set mCameraView correctly. Change-Id: I11efbe52b7639a98798ff16e9281b8799cc5e788 --- src/com/android/camera/ui/FilmStripView.java | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/com/android/camera/ui/FilmStripView.java b/src/com/android/camera/ui/FilmStripView.java index 3edb23d3c..01469baeb 100644 --- a/src/com/android/camera/ui/FilmStripView.java +++ b/src/com/android/camera/ui/FilmStripView.java @@ -2036,17 +2036,18 @@ public class FilmStripView extends ViewGroup implements BottomControlsListener { } // Remove all views from the mViewItem buffer, except the camera view. - for (int i = 0; i < mViewItem.length; i++) { - if (mViewItem[i] == null) { - continue; - } - View v = mViewItem[i].getView(); - if (v != mCameraView) { - removeView(v); - } - ImageData imageData = mDataAdapter.getImageData(mViewItem[i].getId()); - if (imageData != null) { - imageData.recycle(); + for (final ViewItem item : mViewItem) { + if (item != null) { + ImageData imageData = mDataAdapter.getImageData(item.getId()); + if (imageData != null) { + imageData.recycle(); + View v = item.getView(); + if (imageData.getViewType() != ImageData.VIEW_TYPE_STICKY) { + removeView(v); + } else { + mCameraView = v; + } + } } } -- cgit v1.2.3