Picking up dirty albums when something is deleted
diff --git a/src/com/cooliris/media/LocalDataSource.java b/src/com/cooliris/media/LocalDataSource.java
index 0c8ad6d..34d463e 100644
--- a/src/com/cooliris/media/LocalDataSource.java
+++ b/src/com/cooliris/media/LocalDataSource.java
@@ -66,13 +66,18 @@
Handler handler = ((Gallery) mContext).getHandler();
ContentObserver observer = new ContentObserver(handler) {
public void onChange(boolean selfChange) {
- MediaSet mediaSet = feed.getCurrentSet();
- if (mediaSet != null) {
- CacheService.markDirtyImmediate(mediaSet.mId);
- refreshUI(feed, mediaSet.mId);
+ final boolean isPaused = ((Gallery) mContext).isPaused();
+ if (isPaused) {
+ MediaSet mediaSet = feed.getCurrentSet();
+ if (mediaSet != null) {
+ CacheService.markDirtyImmediate(mediaSet.mId);
+ refreshUI(feed, mediaSet.mId);
+ }
}
CacheService.senseDirty(mContext, new CacheService.Observer() {
public void onChange(long[] ids) {
+ if (!isPaused)
+ return;
if (ids != null) {
int numLongs = ids.length;
for (int i = 0; i < numLongs; ++i) {
@@ -89,15 +94,13 @@
Uri uriVideos = Video.Media.EXTERNAL_CONTENT_URI;
ContentResolver cr = mContext.getContentResolver();
mObserver = observer;
- cr.registerContentObserver(uriImages, false, observer);
- cr.registerContentObserver(uriVideos, false, observer);
+ cr.registerContentObserver(uriImages, true, observer);
+ cr.registerContentObserver(uriVideos, true, observer);
sObserverActive = true;
}
public void shutdown() {
- if (ImageManager.isMediaScannerScanning(mContext.getContentResolver())) {
- stopListeners();
- }
+ stopListeners();
}
private void stopListeners() {
diff --git a/src/com/cooliris/media/MediaFeed.java b/src/com/cooliris/media/MediaFeed.java
index d2e4a28..8c9eefa 100644
--- a/src/com/cooliris/media/MediaFeed.java
+++ b/src/com/cooliris/media/MediaFeed.java
@@ -355,6 +355,8 @@
mWaitingForMediaScanner = false;
while (ImageManager.isMediaScannerScanning(mContext.getContentResolver())) {
// MediaScanner is still running, wait
+ if (Thread.interrupted())
+ return;
mWaitingForMediaScanner = true;
try {
if (mContext == null)
@@ -362,7 +364,7 @@
showToast(mContext.getResources().getString(R.string.initializing), Toast.LENGTH_LONG);
Thread.sleep(6000);
} catch (InterruptedException e) {
-
+ return;
}
}
if (mWaitingForMediaScanner) {