diff options
author | Jaikumar Ganesh <jaikumar@google.com> | 2009-09-20 11:25:09 -0700 |
---|---|---|
committer | Jaikumar Ganesh <jaikumar@google.com> | 2009-09-20 11:28:34 -0700 |
commit | 995ae82f38d93050a5f1b80433e8ae844a05953d (patch) | |
tree | c16676f973243d284dba379152c060d766373215 /core/jni/android_server_BluetoothService.cpp | |
parent | d163f4babe101b89aaf322c34d3bafeae237f7da (diff) | |
download | frameworks_base-995ae82f38d93050a5f1b80433e8ae844a05953d.zip frameworks_base-995ae82f38d93050a5f1b80433e8ae844a05953d.tar.gz frameworks_base-995ae82f38d93050a5f1b80433e8ae844a05953d.tar.bz2 |
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
Diffstat (limited to 'core/jni/android_server_BluetoothService.cpp')
-rw-r--r-- | core/jni/android_server_BluetoothService.cpp | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/core/jni/android_server_BluetoothService.cpp b/core/jni/android_server_BluetoothService.cpp index c432ed9..c2f93eea 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) { |