summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaikumar Ganesh <jaikumar@google.com>2010-10-18 15:29:09 -0700
committerJaikumar Ganesh <jaikumar@google.com>2010-10-18 15:32:11 -0700
commit7d0548d0944e48421857de4aec2822ced325bea0 (patch)
tree956617b2a45551ba7688a4b3a684745800683d45
parent2cd6f4709c6c260bfde999d7fe5364e88ee46b53 (diff)
downloadframeworks_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.java2
-rw-r--r--core/java/android/server/BluetoothService.java4
-rw-r--r--services/java/com/android/server/SystemServer.java3
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));