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) {