diff options
| author | Jaikumar Ganesh <jaikumar@google.com> | 2010-10-18 15:29:09 -0700 |
|---|---|---|
| committer | Jaikumar Ganesh <jaikumar@google.com> | 2010-10-18 15:32:11 -0700 |
| commit | 7d0548d0944e48421857de4aec2822ced325bea0 (patch) | |
| tree | 956617b2a45551ba7688a4b3a684745800683d45 | |
| parent | 2cd6f4709c6c260bfde999d7fe5364e88ee46b53 (diff) | |
| download | frameworks_base-7d0548d0944e48421857de4aec2822ced325bea0.zip frameworks_base-7d0548d0944e48421857de4aec2822ced325bea0.tar.gz frameworks_base-7d0548d0944e48421857de4aec2822ced325bea0.tar.bz2 | |
Fix race condition between starting of service and getting the Profile Proxy.
Incoming A2DP connections were not working.
Change-Id: I5a3322ddb39b2512495b4cd2e35593da0f605087
| -rw-r--r-- | core/java/android/server/BluetoothEventLoop.java | 2 | ||||
| -rw-r--r-- | core/java/android/server/BluetoothService.java | 4 | ||||
| -rw-r--r-- | services/java/com/android/server/SystemServer.java | 3 |
3 files changed, 8 insertions, 1 deletions
diff --git a/core/java/android/server/BluetoothEventLoop.java b/core/java/android/server/BluetoothEventLoop.java index cfbc2bd..239c3ac 100644 --- a/core/java/android/server/BluetoothEventLoop.java +++ b/core/java/android/server/BluetoothEventLoop.java @@ -120,7 +120,9 @@ class BluetoothEventLoop { | PowerManager.ON_AFTER_RELEASE, TAG); mWakeLock.setReferenceCounted(false); initializeNativeDataNative(); + } + /*package*/ void getProfileProxy() { mAdapter.getProfileProxy(mContext, mProfileServiceListener, BluetoothProfile.A2DP); } diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java index f8a39f7..7abb98e 100644 --- a/core/java/android/server/BluetoothService.java +++ b/core/java/android/server/BluetoothService.java @@ -319,6 +319,10 @@ public class BluetoothService extends IBluetooth.Stub { mEventLoop = new BluetoothEventLoop(mContext, mAdapter, this); } + public synchronized void initAfterA2dpRegistration() { + mEventLoop.getProfileProxy(); + } + @Override protected void finalize() throws Throwable { mContext.unregisterReceiver(mReceiver); diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index ca763ef..ec12e80 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -215,6 +215,7 @@ class ServerThread extends Thread { bluetoothA2dp = new BluetoothA2dpService(context, bluetooth); ServiceManager.addService(BluetoothA2dpService.BLUETOOTH_A2DP_SERVICE, bluetoothA2dp); + bluetooth.initAfterA2dpRegistration(); int bluetoothOn = Settings.Secure.getInt(mContentResolver, Settings.Secure.BLUETOOTH_ON, 0); @@ -438,7 +439,7 @@ class ServerThread extends Thread { } catch (Throwable e) { Slog.e(TAG, "Failure starting Recognition Service", e); } - + try { Slog.i(TAG, "DiskStats Service"); ServiceManager.addService("diskstats", new DiskStatsService(context)); |
