summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/java/com/android/internal/telephony/cdma/CdmaCallTracker.java12
-rw-r--r--src/java/com/android/internal/telephony/gsm/GsmCallTracker.java12
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();
}