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: