auto import from //branches/cupcake/...@132569
diff --git a/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java b/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
index 6d08657..1644186 100644
--- a/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
+++ b/src/com/android/providers/telephony/MmsSmsDatabaseHelper.java
@@ -152,7 +152,7 @@
 
     public static void updateThread(SQLiteDatabase db, long thread_id) {
         if (thread_id < 0) {
-            updateAllThreads(db);
+            updateAllThreads(db, null, null);
             return;
         }
         
@@ -215,9 +215,15 @@
             "   WHERE threads._id = " + thread_id + ";");
     }
     
-    public static void updateAllThreads(SQLiteDatabase db) {
-        Cursor c = db.query("threads", new String[] { "_id" },
-                            null, null, null, null, null);
+    public static void updateAllThreads(SQLiteDatabase db, String where, String[] whereArgs) {
+        if (where == null) {
+            where = "";
+        } else {
+            where = "WHERE (" + where + ")";
+        }
+        String query = "SELECT _id FROM threads WHERE _id IN " +
+                       "(SELECT DISTINCT thread_id FROM sms " + where + ")";
+        Cursor c = db.rawQuery(query, whereArgs);
         if (c != null) {
             while (c.moveToNext()) {
                 updateThread(db, c.getInt(0));
diff --git a/src/com/android/providers/telephony/MmsSmsProvider.java b/src/com/android/providers/telephony/MmsSmsProvider.java
index 3727c55..b27e332 100644
--- a/src/com/android/providers/telephony/MmsSmsProvider.java
+++ b/src/com/android/providers/telephony/MmsSmsProvider.java
@@ -909,7 +909,7 @@
                 affectedRows = MmsProvider.deleteMessages(context, db,
                                         selection, selectionArgs, uri)
                         + db.delete("sms", selection, selectionArgs);
-                MmsSmsDatabaseHelper.updateAllThreads(db);
+                MmsSmsDatabaseHelper.updateAllThreads(db, selection, selectionArgs);
                 break;
             case URI_OBSOLETE_THREADS:
                 affectedRows = db.delete("threads",
diff --git a/src/com/android/providers/telephony/SmsProvider.java b/src/com/android/providers/telephony/SmsProvider.java
index f0130f5..56b39de 100644
--- a/src/com/android/providers/telephony/SmsProvider.java
+++ b/src/com/android/providers/telephony/SmsProvider.java
@@ -471,7 +471,10 @@
         switch (match) {
             case SMS_ALL:
                 count = db.delete(TABLE_SMS, where, whereArgs);
-                MmsSmsDatabaseHelper.updateAllThreads(db);
+                if (count != 0) {
+                    // Don't update threads unless something changed.
+                    MmsSmsDatabaseHelper.updateAllThreads(db, where, whereArgs);
+                }
                 break;
              
             case SMS_ALL_ID: