From d87c8624a7ae477a6dea86d63866ade04f8d7e7c Mon Sep 17 00:00:00 2001 From: Bobby Georgescu Date: Sun, 30 Sep 2012 14:09:30 -0700 Subject: [PATCH] More logs for gallery crash error, remove a potential cause Bug: 7216012 Made sure that FilterDeleteSet doesn't ever return stale item counts, added extra logging in LocalMergeAlbum for NoSuchElementException so that we can have more info to diagnose this crash if it happens in the future. Change-Id: Ic988522fda4a16bb483db6ad34bc7f81ee098b03 --- src/com/android/gallery3d/data/FilterDeleteSet.java | 5 +---- src/com/android/gallery3d/data/LocalMergeAlbum.java | 13 ++++++++++++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/com/android/gallery3d/data/FilterDeleteSet.java b/src/com/android/gallery3d/data/FilterDeleteSet.java index fc44d48c4..c76412ff8 100644 --- a/src/com/android/gallery3d/data/FilterDeleteSet.java +++ b/src/com/android/gallery3d/data/FilterDeleteSet.java @@ -63,13 +63,11 @@ public class FilterDeleteSet extends MediaSet implements ContentListener { // Deletions currently in effect, ordered by index private ArrayList mCurrent = new ArrayList(); - private int mMediaItemCount; public FilterDeleteSet(Path path, MediaSet baseSet) { super(path, INVALID_DATA_VERSION); mBaseSet = baseSet; mBaseSet.addContentListener(this); - mMediaItemCount = mBaseSet.getMediaItemCount() - mCurrent.size(); } @Override @@ -84,7 +82,7 @@ public class FilterDeleteSet extends MediaSet implements ContentListener { @Override public int getMediaItemCount() { - return mMediaItemCount; + return mBaseSet.getMediaItemCount() - mCurrent.size(); } // Gets the MediaItems whose (post-deletion) index are in the range [start, @@ -221,7 +219,6 @@ public class FilterDeleteSet extends MediaSet implements ContentListener { mCurrent = result; } - mMediaItemCount = mBaseSet.getMediaItemCount() - mCurrent.size(); mDataVersion = nextVersionNumber(); return mDataVersion; } diff --git a/src/com/android/gallery3d/data/LocalMergeAlbum.java b/src/com/android/gallery3d/data/LocalMergeAlbum.java index cbb7492cc..14c1c6e6b 100644 --- a/src/com/android/gallery3d/data/LocalMergeAlbum.java +++ b/src/com/android/gallery3d/data/LocalMergeAlbum.java @@ -24,6 +24,7 @@ import com.android.gallery3d.common.ApiHelper; import java.lang.ref.SoftReference; import java.util.ArrayList; import java.util.Comparator; +import java.util.NoSuchElementException; import java.util.SortedMap; import java.util.TreeMap; @@ -122,7 +123,17 @@ public class LocalMergeAlbum extends MediaSet implements ContentListener { // First find the nearest mark position <= start. SortedMap head = mIndex.headMap(start + 1); - int markPos = head.lastKey(); + int markPos; + try { + markPos = head.lastKey(); + } catch (NoSuchElementException e) { + Log.e(TAG, "getMediaItem("+start+","+count+") failed"); + Log.e(TAG, "mSources: "); + for (MediaSet set : mSources) { + Log.e(TAG, "\t"+set.getPath()); + } + throw e; + } int[] subPos = head.get(markPos).clone(); MediaItem[] slot = new MediaItem[mSources.length]; -- 2.11.0