summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2010-07-01 11:54:00 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-07-01 11:54:00 -0700
commita0c2b53966238125143dec01d3f2598a8b9e33a2 (patch)
tree49fd440f2e2dc667c6aa76d7549c034f5944e67e
parent45bac57aa00281e6b45756c691c588bdaf762521 (diff)
parente2dd8c4592762414c2c27e4589be7edc91a5ecae (diff)
downloadframeworks_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.java15
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);
}