diff options
author | John Reck <jreck@google.com> | 2013-01-16 14:10:30 -0800 |
---|---|---|
committer | John Reck <jreck@google.com> | 2013-01-16 18:05:07 -0800 |
commit | 9686d9d07e344fae2f2310ca544e5401b5e11d30 (patch) | |
tree | 7bc66a807f33e3aa016d0e9c977f85cfffbe62f1 /src/com/android/gallery3d/data/ComboAlbum.java | |
parent | 9003bd581c00a31db4c8291c99a30d5e74fe2dde (diff) | |
download | android_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.java | 24 |
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 |