summaryrefslogtreecommitdiffstats
path: root/src/java/com/android/internal/telephony/gsm/GsmCallTracker.java
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2013-08-02 09:56:31 +0200
committerEthan Chen <intervigil@gmail.com>2013-08-03 16:12:38 -0700
commit332fb18bd27c07c5d50ba1e0e5880e730a240c1b (patch)
tree743546be6ee48941c81926abcddc01d6e2756e61 /src/java/com/android/internal/telephony/gsm/GsmCallTracker.java
parent61aa925f47e4d0970739855236d91b2491f76ece (diff)
downloadframeworks_opt_telephony-332fb18bd27c07c5d50ba1e0e5880e730a240c1b.zip
frameworks_opt_telephony-332fb18bd27c07c5d50ba1e0e5880e730a240c1b.tar.gz
frameworks_opt_telephony-332fb18bd27c07c5d50ba1e0e5880e730a240c1b.tar.bz2
Properly notify of precise call state change after connection hangup.
When disconnecting connections via Connection.hangup(), previously no precise call state notification was sent out. This change should fix BT headsets ringing indefinitely after a blacklisted call came in, as BluetoothPhoneService can now update the headset state properly. Change-Id: I4439d7d8ed47e72da9d061b885ec9a0e6e1b784d
Diffstat (limited to 'src/java/com/android/internal/telephony/gsm/GsmCallTracker.java')
-rw-r--r--src/java/com/android/internal/telephony/gsm/GsmCallTracker.java17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/java/com/android/internal/telephony/gsm/GsmCallTracker.java b/src/java/com/android/internal/telephony/gsm/GsmCallTracker.java
index 1ebc902..3af3881 100644
--- a/src/java/com/android/internal/telephony/gsm/GsmCallTracker.java
+++ b/src/java/com/android/internal/telephony/gsm/GsmCallTracker.java
@@ -432,6 +432,7 @@ public final class GsmCallTracker extends CallTracker {
Connection newRinging = null; //or waiting
boolean hasNonHangupStateChanged = false; // Any change besides
// a dropped connection
+ boolean hasAnyCallDisconnected = false;
boolean needsPollDelay = false;
boolean unknownConnectionAppeared = false;
@@ -595,15 +596,11 @@ public final class GsmCallTracker extends CallTracker {
log("setting cause to " + cause);
}
droppedDuringPoll.remove(i);
- conn.onDisconnect(cause);
- } else if (conn.cause == Connection.DisconnectCause.LOCAL) {
- // Local hangup
+ hasAnyCallDisconnected |= conn.onDisconnect(cause);
+ } else if (conn.cause == Connection.DisconnectCause.LOCAL
+ || conn.cause == Connection.DisconnectCause.INVALID_NUMBER) {
droppedDuringPoll.remove(i);
- conn.onDisconnect(Connection.DisconnectCause.LOCAL);
- } else if (conn.cause ==
- Connection.DisconnectCause.INVALID_NUMBER) {
- droppedDuringPoll.remove(i);
- conn.onDisconnect(Connection.DisconnectCause.INVALID_NUMBER);
+ hasAnyCallDisconnected |= conn.onDisconnect(conn.cause);
}
}
@@ -622,7 +619,7 @@ public final class GsmCallTracker extends CallTracker {
// 1) the phone has started to ring
// 2) A Call/Connection object has changed state...
// we may have switched or held or answered (but not hung up)
- if (newRinging != null || hasNonHangupStateChanged) {
+ if (newRinging != null || hasNonHangupStateChanged || hasAnyCallDisconnected) {
internalClearDisconnected();
}
@@ -632,7 +629,7 @@ public final class GsmCallTracker extends CallTracker {
phone.notifyUnknownConnection();
}
- if (hasNonHangupStateChanged || newRinging != null) {
+ if (hasNonHangupStateChanged || newRinging != null || hasAnyCallDisconnected) {
phone.notifyPreciseCallStateChanged();
}