summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHung-ying Tyan <tyanh@google.com>2010-09-20 10:06:31 +0800
committerHung-ying Tyan <tyanh@google.com>2010-09-20 13:06:30 +0800
commit8544560ccc43de7ff49d91866f461f5572f0b147 (patch)
tree6a741f55cfbeaf5a8c61ea4da0d9a99ddfcc9beb
parentb17eae9e227475a323f61519abc8a7d35ddf8828 (diff)
downloadframeworks_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-xtelephony/java/com/android/internal/telephony/sip/SipPhone.java4
-rw-r--r--voip/java/android/net/sip/SipAudioCallImpl.java16
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,