diff options
| author | Hung-ying Tyan <tyanh@google.com> | 2010-07-23 17:07:23 -0700 |
|---|---|---|
| committer | Hung-ying Tyan <tyanh@google.com> | 2010-07-23 17:10:40 -0700 |
| commit | dda33c25a640d9964b563a0e82c9e51bbfcb905f (patch) | |
| tree | b9bebe4e3cf9eb0ebaf6b6aadff8a859f6fe092c | |
| parent | ef5ec9ddc4b4794b7cf83fe78b63d18c0674319f (diff) | |
| download | android_external_nist-sip-dda33c25a640d9964b563a0e82c9e51bbfcb905f.tar.gz android_external_nist-sip-dda33c25a640d9964b563a0e82c9e51bbfcb905f.tar.bz2 android_external_nist-sip-dda33c25a640d9964b563a0e82c9e51bbfcb905f.zip | |
SIP: fix a bug in WakeupTimer.cancel()
Change-Id: Id97a0e0f223c072ee7ff02331cb9a720ae072194
| -rw-r--r-- | src/com/android/sip/WakeupTimer.java | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/src/com/android/sip/WakeupTimer.java b/src/com/android/sip/WakeupTimer.java index 6739081..71b5eb1 100644 --- a/src/com/android/sip/WakeupTimer.java +++ b/src/com/android/sip/WakeupTimer.java @@ -35,7 +35,7 @@ import java.util.TreeSet; * Only used internally in this package. */ class WakeupTimer extends BroadcastReceiver { - private static final String TAG = "__SIP.WakeupTimer__"; + private static final String TAG = "_SIP.WkTimer_"; private static final String TRIGGER_TIME = "TriggerTime"; private Context mContext; @@ -90,9 +90,8 @@ class WakeupTimer extends BroadcastReceiver { for (MyEvent e : mEventQueue) { int remainingTime = (int) (e.mTriggerTime - now); remainingTime = remainingTime / minPeriod * minPeriod; - if (remainingTime != 0) { - e.mTriggerTime = now + remainingTime; - } + e.mTriggerTime = now + remainingTime; + e.mPeriod = e.mMaxPeriod / minPeriod * minPeriod; } TreeSet<MyEvent> newQueue = new TreeSet<MyEvent>( @@ -166,7 +165,7 @@ class WakeupTimer extends BroadcastReceiver { */ public synchronized void cancel(Runnable callback) { if (stopped() || mEventQueue.isEmpty()) return; - Log.d(TAG, "cancel callback:" + callback); + Log.d(TAG, "cancel:" + callback); MyEvent firstEvent = mEventQueue.first(); for (Iterator<MyEvent> iter = mEventQueue.iterator(); @@ -174,14 +173,17 @@ class WakeupTimer extends BroadcastReceiver { MyEvent event = iter.next(); if (event.mCallback == callback) { iter.remove(); - Log.d(TAG, "cancel event:" + event); + Log.d(TAG, " cancel found:" + event); } } - if (mEventQueue.isEmpty() || (mEventQueue.first() != firstEvent)) { + if (mEventQueue.isEmpty()) { cancelAlarm(); - recalculatePeriods(firstEvent.mTriggerTime); + } else if (mEventQueue.first() != firstEvent) { + cancelAlarm(); + recalculatePeriods(mEventQueue.first().mTriggerTime); scheduleNext(); } + Log.d(TAG, "after cancel:"); printQueue(); } @@ -224,6 +226,8 @@ class WakeupTimer extends BroadcastReceiver { } if (mEventQueue.size() > count) { Log.d(TAG, " ....."); + } else if (count == 0) { + Log.d(TAG, " <empty>"); } } @@ -265,7 +269,15 @@ class WakeupTimer extends BroadcastReceiver { public String toString() { String s = super.toString(); s = s.substring(s.indexOf("@")); - return s + ":" + (mPeriod / 1000) + ":" + (mMaxPeriod / 1000); + return s + ":" + (mPeriod / 1000) + ":" + (mMaxPeriod / 1000) + ":" + + toString(mCallback); + } + + private String toString(Object o) { + String s = o.toString(); + int index = s.indexOf("$"); + if (index > 0) s = s.substring(index + 1); + return s; } } |
