summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBobby Georgescu <georgescu@google.com>2012-09-30 14:09:30 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-10-01 11:17:54 -0700
commitd87c8624a7ae477a6dea86d63866ade04f8d7e7c (patch)
treef7b2aedad758f8c53f8754af5e5b3d9173d1df98 /src
parentf497fdfa1abfea7b4ddabd7850eb528ea1c126ee (diff)
downloadandroid_packages_apps_Gallery2-d87c8624a7ae477a6dea86d63866ade04f8d7e7c.tar.gz
android_packages_apps_Gallery2-d87c8624a7ae477a6dea86d63866ade04f8d7e7c.tar.bz2
android_packages_apps_Gallery2-d87c8624a7ae477a6dea86d63866ade04f8d7e7c.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')
-rw-r--r--src/com/android/gallery3d/data/FilterDeleteSet.java5
-rw-r--r--src/com/android/gallery3d/data/LocalMergeAlbum.java13
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];