diff options
author | Hung-ying Tyan <tyanh@google.com> | 2010-09-20 10:06:31 +0800 |
---|---|---|
committer | Hung-ying Tyan <tyanh@google.com> | 2010-09-20 13:06:30 +0800 |
commit | 8544560ccc43de7ff49d91866f461f5572f0b147 (patch) | |
tree | 6a741f55cfbeaf5a8c61ea4da0d9a99ddfcc9beb | |
parent | b17eae9e227475a323f61519abc8a7d35ddf8828 (diff) | |
download | frameworks_base-8544560ccc43de7ff49d91866f461f5572f0b147.zip frameworks_base-8544560ccc43de7ff49d91866f461f5572f0b147.tar.gz frameworks_base-8544560ccc43de7ff49d91866f461f5572f0b147.tar.bz2 |
SipPhone: fix missing-call DisconnectCause feedback
also fix delivering bad news before closing a SipAudioCallImpl object so that
apps can get the current audio-call object state before it's closed:
http://b/issue?id=3009262
Change-Id: I94c19dae8b4f252de869e614ec462b19b4ff2077
-rwxr-xr-x | telephony/java/com/android/internal/telephony/sip/SipPhone.java | 4 | ||||
-rw-r--r-- | voip/java/android/net/sip/SipAudioCallImpl.java | 16 |
2 files changed, 11 insertions, 9 deletions
diff --git a/telephony/java/com/android/internal/telephony/sip/SipPhone.java b/telephony/java/com/android/internal/telephony/sip/SipPhone.java index 3e9fb99..0a87ddb 100755 --- a/telephony/java/com/android/internal/telephony/sip/SipPhone.java +++ b/telephony/java/com/android/internal/telephony/sip/SipPhone.java @@ -823,7 +823,9 @@ public class SipPhone extends SipPhoneBase { @Override public void onCallEnded(SipAudioCall call) { - onCallEnded(Connection.DisconnectCause.NORMAL); + onCallEnded(call.isInCall() + ? Connection.DisconnectCause.NORMAL + : Connection.DisconnectCause.INCOMING_MISSED); } @Override diff --git a/voip/java/android/net/sip/SipAudioCallImpl.java b/voip/java/android/net/sip/SipAudioCallImpl.java index 111bfff..ccf4d15 100644 --- a/voip/java/android/net/sip/SipAudioCallImpl.java +++ b/voip/java/android/net/sip/SipAudioCallImpl.java @@ -269,7 +269,6 @@ public class SipAudioCallImpl extends SipSessionAdapter @Override public void onCallEnded(ISipSession session) { Log.d(TAG, "sip call ended: " + session); - close(); Listener listener = mListener; if (listener != null) { try { @@ -278,12 +277,12 @@ public class SipAudioCallImpl extends SipSessionAdapter Log.e(TAG, "onCallEnded()", t); } } + close(); } @Override public void onCallBusy(ISipSession session) { Log.d(TAG, "sip call busy: " + session); - close(false); Listener listener = mListener; if (listener != null) { try { @@ -292,6 +291,7 @@ public class SipAudioCallImpl extends SipSessionAdapter Log.e(TAG, "onCallBusy()", t); } } + close(false); } @Override @@ -316,12 +316,6 @@ public class SipAudioCallImpl extends SipSessionAdapter + ": " + message); mErrorCode = errorCode; mErrorMessage = message; - synchronized (this) { - if ((mErrorCode == SipErrorCode.DATA_CONNECTION_LOST) - || !isInCall()) { - close(true); - } - } Listener listener = mListener; if (listener != null) { try { @@ -330,6 +324,12 @@ public class SipAudioCallImpl extends SipSessionAdapter Log.e(TAG, "onError()", t); } } + synchronized (this) { + if ((errorCode == SipErrorCode.DATA_CONNECTION_LOST) + || !isInCall()) { + close(true); + } + } } public synchronized void attachCall(ISipSession session, |