// 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
@Override
public int getMediaItemCount() {
- return mMediaItemCount;
+ return mBaseSet.getMediaItemCount() - mCurrent.size();
}
// Gets the MediaItems whose (post-deletion) index are in the range [start,
mCurrent = result;
}
- mMediaItemCount = mBaseSet.getMediaItemCount() - mCurrent.size();
mDataVersion = nextVersionNumber();
return mDataVersion;
}
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;
// 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];