summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHung-ying Tyan <tyanh@google.com>2010-07-23 17:07:23 -0700
committerHung-ying Tyan <tyanh@google.com>2010-07-23 17:10:40 -0700
commitdda33c25a640d9964b563a0e82c9e51bbfcb905f (patch)
treeb9bebe4e3cf9eb0ebaf6b6aadff8a859f6fe092c
parentef5ec9ddc4b4794b7cf83fe78b63d18c0674319f (diff)
downloadnist-sip-dda33c25a640d9964b563a0e82c9e51bbfcb905f.tar.gz
SIP: fix a bug in WakeupTimer.cancel()
Change-Id: Id97a0e0f223c072ee7ff02331cb9a720ae072194
-rw-r--r--src/com/android/sip/WakeupTimer.java30
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;
}
}