diff options
author | Hung-ying Tyan <tyanh@google.com> | 2011-06-23 18:32:59 +0800 |
---|---|---|
committer | Hung-ying Tyan <tyanh@google.com> | 2011-06-23 19:23:13 +0800 |
commit | 4af085ff26fbe9e13f7002496fd505dbdb36b282 (patch) | |
tree | cc1a34715027a8c83223842b370a4f07e2190a33 /voip | |
parent | 12750701d0f90ed0166f5ddcf588c1235efe830a (diff) | |
download | frameworks_base-4af085ff26fbe9e13f7002496fd505dbdb36b282.zip frameworks_base-4af085ff26fbe9e13f7002496fd505dbdb36b282.tar.gz frameworks_base-4af085ff26fbe9e13f7002496fd505dbdb36b282.tar.bz2 |
Execute all the due wakeup events in SipWakeupTimer.
Events are sorted by periods. So events of larger periods may have trigger
time (i.e., when the event should be processed) earlier than the ones of smaller
periods. So need to scan the whole queue looking for due events. The scan takes
O(n) time but we expect the queue size to be small.
Change-Id: I08bd3bd9d4bb8decb78f3c91c943396463ca023a
Diffstat (limited to 'voip')
-rw-r--r-- | voip/java/com/android/server/sip/SipWakeupTimer.java | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/voip/java/com/android/server/sip/SipWakeupTimer.java b/voip/java/com/android/server/sip/SipWakeupTimer.java index 9cc26b0..76780c0 100644 --- a/voip/java/com/android/server/sip/SipWakeupTimer.java +++ b/voip/java/com/android/server/sip/SipWakeupTimer.java @@ -173,7 +173,7 @@ class SipWakeupTimer extends BroadcastReceiver { long triggerTime = event.mTriggerTime; if (DEBUG_TIMER) { - Log.d(TAG, " add event " + event + " scheduled at " + Log.d(TAG, " add event " + event + " scheduled on " + showTime(triggerTime) + " at " + showTime(now) + ", #events=" + mEventQueue.size()); printQueue(); @@ -267,10 +267,10 @@ class SipWakeupTimer extends BroadcastReceiver { if (stopped() || mEventQueue.isEmpty()) return; for (MyEvent event : mEventQueue) { - if (event.mTriggerTime != triggerTime) break; + if (event.mTriggerTime != triggerTime) continue; if (DEBUG_TIMER) Log.d(TAG, "execute " + event); - event.mLastTriggerTime = event.mTriggerTime; + event.mLastTriggerTime = triggerTime; event.mTriggerTime += event.mPeriod; // run the callback in the handler thread to prevent deadlock @@ -324,6 +324,8 @@ class SipWakeupTimer extends BroadcastReceiver { } } + // Sort the events by mMaxPeriod so that the first event can be used to + // align events with larger periods private static class MyEventComparator implements Comparator<MyEvent> { public int compare(MyEvent e1, MyEvent e2) { if (e1 == e2) return 0; |