diff options
author | Benjamin Franz <bfranz@google.com> | 2014-12-10 20:36:22 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2014-12-10 20:36:22 +0000 |
commit | 16d73a752e9ee937c39be4ce2da5411cf1af0c5c (patch) | |
tree | bccac03cdc12bcc5dc435cc3dc6131616748bac3 | |
parent | f9d2cd9931f12f7cb3459a322e7d92079fcb184d (diff) | |
parent | df55bf45e8ebcf699b9b4574db9119809935c549 (diff) | |
download | frameworks_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.java | 31 |
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) { |