summaryrefslogtreecommitdiffstats
path: root/core/jni/android_server_BluetoothEventLoop.cpp
diff options
context:
space:
mode:
authorJaikumar Ganesh <jaikumar@google.com>2009-09-11 12:16:19 -0700
committerJaikumar Ganesh <jaikumar@google.com>2009-09-11 12:16:19 -0700
commit5e59ca8ae4e29efb77acbd5513dcc109ea5dd2b4 (patch)
treecc6707b45e6d0507c600181f86dd721748e60c1b /core/jni/android_server_BluetoothEventLoop.cpp
parentd304ae583d862250a21b5949fc3dbdf3af1febac (diff)
downloadframeworks_base-5e59ca8ae4e29efb77acbd5513dcc109ea5dd2b4.zip
frameworks_base-5e59ca8ae4e29efb77acbd5513dcc109ea5dd2b4.tar.gz
frameworks_base-5e59ca8ae4e29efb77acbd5513dcc109ea5dd2b4.tar.bz2
Handle DisconnectRequested message sent by Bluez.
Diffstat (limited to 'core/jni/android_server_BluetoothEventLoop.cpp')
-rw-r--r--core/jni/android_server_BluetoothEventLoop.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/core/jni/android_server_BluetoothEventLoop.cpp b/core/jni/android_server_BluetoothEventLoop.cpp
index 8fe7487..79a3247 100644
--- a/core/jni/android_server_BluetoothEventLoop.cpp
+++ b/core/jni/android_server_BluetoothEventLoop.cpp
@@ -45,6 +45,7 @@ static jmethodID method_onDeviceFound;
static jmethodID method_onDeviceDisappeared;
static jmethodID method_onDeviceCreated;
static jmethodID method_onDeviceRemoved;
+static jmethodID method_onDeviceDisconnectRequested;
static jmethodID method_onCreatePairedDeviceResult;
static jmethodID method_onGetDeviceServiceChannelResult;
@@ -84,6 +85,8 @@ static void classInitNative(JNIEnv* env, jclass clazz) {
"(Ljava/lang/String;)V");
method_onDeviceCreated = env->GetMethodID(clazz, "onDeviceCreated", "(Ljava/lang/String;)V");
method_onDeviceRemoved = env->GetMethodID(clazz, "onDeviceRemoved", "(Ljava/lang/String;)V");
+ method_onDeviceDisconnectRequested = env->GetMethodID(clazz, "onDeviceDisconnectRequested",
+ "(Ljava/lang/String;)V");
method_onCreatePairedDeviceResult = env->GetMethodID(clazz, "onCreatePairedDeviceResult",
"(Ljava/lang/String;I)V");
@@ -815,6 +818,14 @@ static DBusHandlerResult event_filter(DBusConnection *conn, DBusMessage *msg,
str_array);
} else LOG_AND_FREE_DBUS_ERROR_WITH_MSG(&err, msg);
goto success;
+ } else if (dbus_message_is_signal(msg,
+ "org.bluez.Device",
+ "DisconnectRequested")) {
+ const char *remote_device_path = dbus_message_get_path(msg);
+ env->CallVoidMethod(nat->me,
+ method_onDeviceDisconnectRequested,
+ env->NewStringUTF(remote_device_path));
+ goto success;
}
ret = a2dp_event_filter(msg, env);