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.