diff options
author | Hung-ying Tyan <tyanh@google.com> | 2010-08-20 08:34:17 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-08-20 08:34:17 -0700 |
commit | 7e8f0c7454339d240761684807135fbc490e99f6 (patch) | |
tree | 9245e52f439b71a5817f545bdd82c02ce28a6fbf | |
parent | 6cf5eb0606ecdc22e7c431971a0c621413564840 (diff) | |
parent | b9a1793195853d6f4a8656d029f0ab47a544d31d (diff) | |
download | frameworks_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.java | 53 |
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() { |