diff options
author | Danny Baumann <dannybaumann@web.de> | 2013-08-02 09:56:31 +0200 |
---|---|---|
committer | Ethan Chen <intervigil@gmail.com> | 2013-08-03 16:12:38 -0700 |
commit | 332fb18bd27c07c5d50ba1e0e5880e730a240c1b (patch) | |
tree | 743546be6ee48941c81926abcddc01d6e2756e61 /src/java/com/android/internal/telephony/gsm/GsmCallTracker.java | |
parent | 61aa925f47e4d0970739855236d91b2491f76ece (diff) | |
download | frameworks_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.java | 17 |
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(); } |