summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Franz <bfranz@google.com>2014-12-10 20:36:22 +0000
committerandroid-build-merger <android-build-merger@google.com>2014-12-10 20:36:22 +0000
commit16d73a752e9ee937c39be4ce2da5411cf1af0c5c (patch)
treebccac03cdc12bcc5dc435cc3dc6131616748bac3
parentf9d2cd9931f12f7cb3459a322e7d92079fcb184d (diff)
parentdf55bf45e8ebcf699b9b4574db9119809935c549 (diff)
downloadframeworks_base-16d73a752e9ee937c39be4ce2da5411cf1af0c5c.zip
frameworks_base-16d73a752e9ee937c39be4ce2da5411cf1af0c5c.tar.gz
frameworks_base-16d73a752e9ee937c39be4ce2da5411cf1af0c5c.tar.bz2
am a96ba381: Merge "Only add successfully bound profile services to mProfileServices." into lmp-mr1-dev
automerge: df55bf4 * commit 'df55bf45e8ebcf699b9b4574db9119809935c549': Only add successfully bound profile services to mProfileServices.
-rw-r--r--services/core/java/com/android/server/BluetoothManagerService.java31
1 files changed, 17 insertions, 14 deletions
diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java
index 3117a17..ca376fd 100644
--- a/services/core/java/com/android/server/BluetoothManagerService.java
+++ b/services/core/java/com/android/server/BluetoothManagerService.java
@@ -535,15 +535,14 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
Log.d(TAG, "Creating new ProfileServiceConnections object for"
+ " profile: " + bluetoothProfile);
}
- Intent intent = null;
- if (bluetoothProfile == BluetoothProfile.HEADSET) {
- intent = new Intent(IBluetoothHeadset.class.getName());
- } else {
- return false;
- }
+
+ if (bluetoothProfile != BluetoothProfile.HEADSET) return false;
+
+ Intent intent = new Intent(IBluetoothHeadset.class.getName());
psc = new ProfileServiceConnections(intent);
+ if (!psc.bindService()) return false;
+
mProfileServices.put(new Integer(bluetoothProfile), psc);
- psc.bindService();
}
}
@@ -571,7 +570,11 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
synchronized (mProfileServices) {
for (Integer i : mProfileServices.keySet()) {
ProfileServiceConnections psc = mProfileServices.get(i);
- mContext.unbindService(psc);
+ try {
+ mContext.unbindService(psc);
+ } catch (IllegalArgumentException e) {
+ Log.e(TAG, "Unable to unbind service with intent: " + psc.mIntent, e);
+ }
psc.removeAllProxies();
}
mProfileServices.clear();
@@ -596,16 +599,16 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
mIntent = intent;
}
- private void bindService() {
- if (mIntent != null && mService == null) {
- if (!doBind(mIntent, this, 0, UserHandle.CURRENT_OR_SELF)) {
- Log.w(TAG, "Unable to bind with intent: " + mIntent
- + ". Triggering retry.");
- }
+ private boolean bindService() {
+ if (mIntent != null && mService == null &&
+ doBind(mIntent, this, 0, UserHandle.CURRENT_OR_SELF)) {
Message msg = mHandler.obtainMessage(MESSAGE_BIND_PROFILE_SERVICE);
msg.obj = this;
mHandler.sendMessageDelayed(msg, TIMEOUT_BIND_MS);
+ return true;
}
+ Log.w(TAG, "Unable to bind with intent: " + mIntent);
+ return false;
}
private void addProxy(IBluetoothProfileServiceConnection proxy) {