diff options
-rw-r--r-- | src/java/com/android/internal/telephony/cdma/CdmaCallTracker.java | 12 | ||||
-rw-r--r-- | src/java/com/android/internal/telephony/gsm/GsmCallTracker.java | 12 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/java/com/android/internal/telephony/cdma/CdmaCallTracker.java b/src/java/com/android/internal/telephony/cdma/CdmaCallTracker.java index a7d5d0a..196e795 100644 --- a/src/java/com/android/internal/telephony/cdma/CdmaCallTracker.java +++ b/src/java/com/android/internal/telephony/cdma/CdmaCallTracker.java @@ -75,6 +75,10 @@ public final class CdmaCallTracker extends CallTracker { CdmaConnection pendingMO; boolean hangupPendingMO; + + //Used to re-request the list of current calls + boolean slow_modem = (SystemProperties.getInt("ro.telephony.slow_modem",0) != 0); + boolean pendingCallInEcm=false; boolean mIsInEmergencyCall = false; CDMAPhone phone; @@ -496,6 +500,13 @@ public final class CdmaCallTracker extends CallTracker { boolean needsPollDelay = false; boolean unknownConnectionAppeared = false; + if (slow_modem) { + if (polledCalls.size() == 0 && !hangupPendingMO){ + lastRelevantPoll = obtainMessage(EVENT_POLL_CALLS_RESULT); + cm.getCurrentCalls(lastRelevantPoll); + return; + } + } for (int i = 0, curDC = 0, dcSize = polledCalls.size() ; i < connections.length; i++) { CdmaConnection conn = connections[i]; @@ -829,6 +840,7 @@ public final class CdmaCallTracker extends CallTracker { "does not belong to CdmaCallTracker " + this); } + hangupPendingMO = true; call.onHangupLocal(); phone.notifyPreciseCallStateChanged(); } diff --git a/src/java/com/android/internal/telephony/gsm/GsmCallTracker.java b/src/java/com/android/internal/telephony/gsm/GsmCallTracker.java index fc7fe8a..c2d1640 100644 --- a/src/java/com/android/internal/telephony/gsm/GsmCallTracker.java +++ b/src/java/com/android/internal/telephony/gsm/GsmCallTracker.java @@ -81,6 +81,9 @@ public final class GsmCallTracker extends CallTracker { GsmConnection pendingMO; boolean hangupPendingMO; + //Used to re-request the list of current calls + boolean slow_modem = (SystemProperties.getInt("ro.telephony.slow_modem",0) != 0); + GSMPhone phone; boolean desiredMute = false; // false = mute off @@ -432,6 +435,14 @@ public final class GsmCallTracker extends CallTracker { boolean needsPollDelay = false; boolean unknownConnectionAppeared = false; + if (slow_modem) { + if (polledCalls.size() == 0 && !hangupPendingMO){ + lastRelevantPoll = obtainMessage(EVENT_POLL_CALLS_RESULT); + cm.getCurrentCalls(lastRelevantPoll); + return; + } + } + for (int i = 0, curDC = 0, dcSize = polledCalls.size() ; i < connections.length; i++) { GsmConnection conn = connections[i]; @@ -759,6 +770,7 @@ public final class GsmCallTracker extends CallTracker { "does not belong to GsmCallTracker " + this); } + hangupPendingMO = true; call.onHangupLocal(); phone.notifyPreciseCallStateChanged(); } |