From 995ae82f38d93050a5f1b80433e8ae844a05953d Mon Sep 17 00:00:00 2001 From: Jaikumar Ganesh Date: Sun, 20 Sep 2009 11:25:09 -0700 Subject: [PATCH] Make removeBond() call async. This call has been synchronus since Bluez3.36. However, since the semantics for all Bluetooth API calls are asynchronous make this so too. It does fix an occasional ANR seen while unpairing. Change-Id: If81f8ec262ea1f6f62775282ab33855a8669c41a --- core/jni/android_server_BluetoothService.cpp | 31 +++++++------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/core/jni/android_server_BluetoothService.cpp b/core/jni/android_server_BluetoothService.cpp index c432ed9ab2abb..c2f93eea868d3 100644 --- a/core/jni/android_server_BluetoothService.cpp +++ b/core/jni/android_server_BluetoothService.cpp @@ -387,33 +387,24 @@ static jboolean cancelDeviceCreationNative(JNIEnv *env, jobject object, static jboolean removeDeviceNative(JNIEnv *env, jobject object, jstring object_path) { LOGV(__FUNCTION__); - jboolean result = JNI_FALSE; #ifdef HAVE_BLUETOOTH native_data_t *nat = get_native_data(env, object); if (nat) { const char *c_object_path = env->GetStringUTFChars(object_path, NULL); - DBusError err; - dbus_error_init(&err); - DBusMessage *reply = - dbus_func_args_error(env, nat->conn, &err, - get_adapter_path(env, object), - DBUS_ADAPTER_IFACE, "RemoveDevice", - DBUS_TYPE_OBJECT_PATH, &c_object_path, - DBUS_TYPE_INVALID); - if (!reply) { - if (dbus_error_is_set(&err)) { - LOG_AND_FREE_DBUS_ERROR(&err); - } else - LOGE("DBus reply is NULL in function %s", __FUNCTION__); - result = JNI_FALSE; - } else { - result = JNI_TRUE; - } + bool ret = dbus_func_args_async(env, nat->conn, -1, + NULL, + NULL, + NULL, + get_adapter_path(env, object), + DBUS_ADAPTER_IFACE, + "RemoveDevice", + DBUS_TYPE_OBJECT_PATH, &c_object_path, + DBUS_TYPE_INVALID); env->ReleaseStringUTFChars(object_path, c_object_path); - if (reply) dbus_message_unref(reply); + return ret ? JNI_TRUE : JNI_FALSE; } #endif - return result; + return JNI_FALSE; } static jint enableNative(JNIEnv *env, jobject object) {