Fix for bug #2634470 (Force close in FRF26)
- make deleteEventInternal() not launching a thread for checking alarms when used in a batch
Change-Id: I72f8fe9ba1561623732f02bcbfb3d92dd4fde097
diff --git a/src/com/android/providers/calendar/CalendarProvider2.java b/src/com/android/providers/calendar/CalendarProvider2.java
index f033b94..a50f903 100644
--- a/src/com/android/providers/calendar/CalendarProvider2.java
+++ b/src/com/android/providers/calendar/CalendarProvider2.java
@@ -2296,8 +2296,10 @@
try {
while (cursor.moveToNext()) {
long id = cursor.getLong(0);
- result += deleteEventInternal(id, callerIsSyncAdapter);
+ result += deleteEventInternal(id, callerIsSyncAdapter, true /* isBatch */);
}
+ scheduleNextAlarm(false /* do not remove alarms */);
+ triggerAppWidgetUpdate(-1 /* changedEventId */);
} finally {
cursor.close();
cursor = null;
@@ -2312,7 +2314,7 @@
+ "doesn't support selection based deletion for type "
+ match);
}
- return deleteEventInternal(id, callerIsSyncAdapter);
+ return deleteEventInternal(id, callerIsSyncAdapter, false /* isBatch */);
}
case ATTENDEES:
{
@@ -2420,7 +2422,7 @@
}
}
- private int deleteEventInternal(long id, boolean callerIsSyncAdapter) {
+ private int deleteEventInternal(long id, boolean callerIsSyncAdapter, boolean isBatch) {
int result = 0;
String selectionArgs[] = new String[] {String.valueOf(id)};
@@ -2471,8 +2473,10 @@
cursor = null;
}
- scheduleNextAlarm(false /* do not remove alarms */);
- triggerAppWidgetUpdate(-1);
+ if (!isBatch) {
+ scheduleNextAlarm(false /* do not remove alarms */);
+ triggerAppWidgetUpdate(-1 /* changedEventId */);
+ }
// Delete associated data; attendees, however, are deleted with the actual event so
// that the sync adapter is able to notify attendees of the cancellation.