diff options
author | Bobby Georgescu <georgescu@google.com> | 2012-09-30 14:09:30 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2012-10-01 11:17:54 -0700 |
commit | fa434b0ece14ed98eb0e25d3a13374720d641709 (patch) | |
tree | cad952225d2079cca9481e97afea55132df0437c /src/com/android/gallery3d | |
parent | bea843f7881f4503bcb4f0489da42f119d14ae23 (diff) | |
download | android_packages_apps_Snap-fa434b0ece14ed98eb0e25d3a13374720d641709.tar.gz android_packages_apps_Snap-fa434b0ece14ed98eb0e25d3a13374720d641709.tar.bz2 android_packages_apps_Snap-fa434b0ece14ed98eb0e25d3a13374720d641709.zip |
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
Diffstat (limited to 'src/com/android/gallery3d')
-rw-r--r-- | src/com/android/gallery3d/data/FilterDeleteSet.java | 5 | ||||
-rw-r--r-- | 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<Deletion> mCurrent = new ArrayList<Deletion>(); - 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<Integer, int[]> 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]; |