summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHung-ying Tyan <tyanh@google.com>2010-08-20 08:34:17 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2010-08-20 08:34:17 -0700
commit7e8f0c7454339d240761684807135fbc490e99f6 (patch)
tree9245e52f439b71a5817f545bdd82c02ce28a6fbf
parent6cf5eb0606ecdc22e7c431971a0c621413564840 (diff)
parentb9a1793195853d6f4a8656d029f0ab47a544d31d (diff)
downloadframeworks_base-7e8f0c7454339d240761684807135fbc490e99f6.zip
frameworks_base-7e8f0c7454339d240761684807135fbc490e99f6.tar.gz
frameworks_base-7e8f0c7454339d240761684807135fbc490e99f6.tar.bz2
am b9a17931: Merge "SipSession: make potential time-consuming ops run on background thread" into gingerbread
Merge commit 'b9a1793195853d6f4a8656d029f0ab47a544d31d' into gingerbread-plus-aosp * commit 'b9a1793195853d6f4a8656d029f0ab47a544d31d': SipSession: make potential time-consuming ops run on background thread
-rw-r--r--services/java/com/android/server/sip/SipSessionGroup.java53
1 files changed, 26 insertions, 27 deletions
diff --git a/services/java/com/android/server/sip/SipSessionGroup.java b/services/java/com/android/server/sip/SipSessionGroup.java
index db3f536..d33558b 100644
--- a/services/java/com/android/server/sip/SipSessionGroup.java
+++ b/services/java/com/android/server/sip/SipSessionGroup.java
@@ -381,14 +381,29 @@ class SipSessionGroup implements SipListener {
: listener);
}
+ // process the command in a new thread
+ private void doCommandAsync(final EventObject command) {
+ new Thread(new Runnable() {
+ public void run() {
+ try {
+ processCommand(command);
+ } catch (SipException e) {
+ // TODO: find a better way to do this
+ if ((command instanceof RegisterCommand)
+ || (command == DEREGISTER)) {
+ onRegistrationFailed(e);
+ } else {
+ onError(e);
+ }
+ }
+ }
+ }).start();
+ }
+
public void makeCall(SipProfile peerProfile,
SessionDescription sessionDescription) {
- try {
- processCommand(
- new MakeCallCommand(peerProfile, sessionDescription));
- } catch (SipException e) {
- onError(e);
- }
+ doCommandAsync(
+ new MakeCallCommand(peerProfile, sessionDescription));
}
public void answerCall(SessionDescription sessionDescription) {
@@ -401,36 +416,20 @@ class SipSessionGroup implements SipListener {
}
public void endCall() {
- try {
- processCommand(END_CALL);
- } catch (SipException e) {
- onError(e);
- }
+ doCommandAsync(END_CALL);
}
public void changeCall(SessionDescription sessionDescription) {
- try {
- processCommand(
- new MakeCallCommand(mPeerProfile, sessionDescription));
- } catch (SipException e) {
- onError(e);
- }
+ doCommandAsync(
+ new MakeCallCommand(mPeerProfile, sessionDescription));
}
public void register(int duration) {
- try {
- processCommand(new RegisterCommand(duration));
- } catch (SipException e) {
- onRegistrationFailed(e);
- }
+ doCommandAsync(new RegisterCommand(duration));
}
public void unregister() {
- try {
- processCommand(DEREGISTER);
- } catch (SipException e) {
- onRegistrationFailed(e);
- }
+ doCommandAsync(DEREGISTER);
}
public boolean isReRegisterRequired() {