diff options
author | Eric Laurent <elaurent@google.com> | 2010-07-01 11:54:00 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-07-01 11:54:00 -0700 |
commit | a0c2b53966238125143dec01d3f2598a8b9e33a2 (patch) | |
tree | 49fd440f2e2dc667c6aa76d7549c034f5944e67e | |
parent | 45bac57aa00281e6b45756c691c588bdaf762521 (diff) | |
parent | e2dd8c4592762414c2c27e4589be7edc91a5ecae (diff) | |
download | frameworks_base-a0c2b53966238125143dec01d3f2598a8b9e33a2.zip frameworks_base-a0c2b53966238125143dec01d3f2598a8b9e33a2.tar.gz frameworks_base-a0c2b53966238125143dec01d3f2598a8b9e33a2.tar.bz2 |
Merge "Fix issue 2811538: System server crash when disconnecting BT headset after using SCO off call." into gingerbread
-rw-r--r-- | media/java/android/media/AudioService.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index 50f0674..9212708 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -16,6 +16,7 @@ package android.media; +import java.util.NoSuchElementException; import android.app.ActivityManagerNative; import android.content.BroadcastReceiver; import android.content.ComponentName; @@ -1016,7 +1017,11 @@ public class AudioService extends IAudioService.Stub { } else { mStartcount--; if (mStartcount == 0) { - mCb.unlinkToDeath(this, 0); + try { + mCb.unlinkToDeath(this, 0); + } catch (NoSuchElementException e) { + Log.w(TAG, "decCount() going to 0 but not registered to binder"); + } } requestScoState(BluetoothHeadset.AUDIO_STATE_DISCONNECTED); } @@ -1025,8 +1030,14 @@ public class AudioService extends IAudioService.Stub { public void clearCount(boolean stopSco) { synchronized(mScoClients) { + if (mStartcount != 0) { + try { + mCb.unlinkToDeath(this, 0); + } catch (NoSuchElementException e) { + Log.w(TAG, "clearCount() mStartcount: "+mStartcount+" != 0 but not registered to binder"); + } + } mStartcount = 0; - mCb.unlinkToDeath(this, 0); if (stopSco) { requestScoState(BluetoothHeadset.AUDIO_STATE_DISCONNECTED); } |