summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/data/ComboAlbum.java
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2013-01-16 14:10:30 -0800
committerJohn Reck <jreck@google.com>2013-01-16 18:05:07 -0800
commit9686d9d07e344fae2f2310ca544e5401b5e11d30 (patch)
tree7bc66a807f33e3aa016d0e9c977f85cfffbe62f1 /src/com/android/gallery3d/data/ComboAlbum.java
parent9003bd581c00a31db4c8291c99a30d5e74fe2dde (diff)
downloadandroid_packages_apps_Snap-9686d9d07e344fae2f2310ca544e5401b5e11d30.tar.gz
android_packages_apps_Snap-9686d9d07e344fae2f2310ca544e5401b5e11d30.tar.bz2
android_packages_apps_Snap-9686d9d07e344fae2f2310ca544e5401b5e11d30.zip
New loading model
Rename reload() to loadIfDirty() loadIfDirty is implemented by MediaSet and is final loadIfDirty is now blocking instead of async Subclasses must implement two protected methods, isDirtyLocked() and load() The change from async reload() to sync loadIfDirty() should be fine since all users of reload() were doing so from a background thread already, and the longest load() is PicasaAlbumSet which is still a fairly brisk 40ms or so Change-Id: If5cc596a1c13e52e5f4efff1a144bd086d37cfb7
Diffstat (limited to 'src/com/android/gallery3d/data/ComboAlbum.java')
-rw-r--r--src/com/android/gallery3d/data/ComboAlbum.java24
1 files changed, 18 insertions, 6 deletions
diff --git a/src/com/android/gallery3d/data/ComboAlbum.java b/src/com/android/gallery3d/data/ComboAlbum.java
index cadd9f8af..e193afa6d 100644
--- a/src/com/android/gallery3d/data/ComboAlbum.java
+++ b/src/com/android/gallery3d/data/ComboAlbum.java
@@ -27,11 +27,13 @@ public class ComboAlbum extends MediaSet implements ContentListener {
@SuppressWarnings("unused")
private static final String TAG = "ComboAlbum";
private final MediaSet[] mSets;
+ private final boolean[] mDirtySets;
private String mName;
public ComboAlbum(Path path, MediaSet[] mediaSets, String name) {
super(path, nextVersionNumber());
mSets = mediaSets;
+ mDirtySets = new boolean[mSets.length];
for (MediaSet set : mSets) {
set.addContentListener(this);
}
@@ -81,14 +83,24 @@ public class ComboAlbum extends MediaSet implements ContentListener {
}
@Override
- public long reload() {
- boolean changed = false;
+ protected boolean isDirtyLocked() {
+ boolean dirty = false;
+ for (int i = 0; i < mSets.length; i++) {
+ mDirtySets[i] = mSets[i].isDirtyLocked();
+ dirty |= mDirtySets[i]
+ || mSets[i].getDataVersion() > getDataVersion();
+ }
+ return dirty;
+ }
+
+ @Override
+ protected void load() throws InterruptedException {
for (int i = 0, n = mSets.length; i < n; ++i) {
- long version = mSets[i].reload();
- if (version > mDataVersion) changed = true;
+ if (mDirtySets[i]) {
+ mDirtySets[i] = false;
+ mSets[i].load();
+ }
}
- if (changed) mDataVersion = nextVersionNumber();
- return mDataVersion;
}
@Override