From a6cec8feed5c135bb5f4d6193012d13258a067c4 Mon Sep 17 00:00:00 2001 From: Hung-ying Tyan Date: Thu, 30 Jun 2011 18:05:39 +0800 Subject: Synchronize SipWakeupTimer.onReceive() to fix the race of two threads that change mPendingIntent; one assigns a new one and the other nullifies it. Change-Id: I5e01f83ea1ac437811d2073839adef9bd0a30ec9 --- voip/java/com/android/server/sip/SipWakeupTimer.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/voip/java/com/android/server/sip/SipWakeupTimer.java b/voip/java/com/android/server/sip/SipWakeupTimer.java index 76780c02b3df..00d47ac63ce6 100644 --- a/voip/java/com/android/server/sip/SipWakeupTimer.java +++ b/voip/java/com/android/server/sip/SipWakeupTimer.java @@ -83,7 +83,7 @@ class SipWakeupTimer extends BroadcastReceiver { mEventQueue = null; } - private synchronized boolean stopped() { + private boolean stopped() { if (mEventQueue == null) { Log.w(TAG, "Timer stopped"); return true; @@ -233,7 +233,7 @@ class SipWakeupTimer extends BroadcastReceiver { } @Override - public void onReceive(Context context, Intent intent) { + public synchronized void onReceive(Context context, Intent intent) { // This callback is already protected by AlarmManager's wake lock. String action = intent.getAction(); if (getAction().equals(action) @@ -261,7 +261,7 @@ class SipWakeupTimer extends BroadcastReceiver { } } - private synchronized void execute(long triggerTime) { + private void execute(long triggerTime) { if (DEBUG_TIMER) Log.d(TAG, "time's up, triggerTime = " + showTime(triggerTime) + ": " + mEventQueue.size()); if (stopped() || mEventQueue.isEmpty()) return; -- cgit v1.2.3-59-g8ed1b